Php 使用blueimp jQuery文件上载时出现权限错误
我对jQuery文件上传有问题。我将它与PHP代码一起使用,我希望根据登录的用户将文件上传到不同的文件夹中。 例如,如果登录用户的代码为“abcd”,我希望在“upload/2017/abcd/”中上载该文件 为此,我编写了以下代码:Php 使用blueimp jQuery文件上载时出现权限错误,php,jquery,jquery-file-upload,blueimp,Php,Jquery,Jquery File Upload,Blueimp,我对jQuery文件上传有问题。我将它与PHP代码一起使用,我希望根据登录的用户将文件上传到不同的文件夹中。 例如,如果登录用户的代码为“abcd”,我希望在“upload/2017/abcd/”中上载该文件 为此,我编写了以下代码: $(function () { 'use strict'; // Change this to the location of your server-side upload handler: var url = '
$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var url = 'upload/<?= $year?>/<?= $logged_user?>';
$('#fileupload').fileupload({
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
upload_dir: url,
upload_url: url,
url: url,
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
$('<p/>').text(file.name).appendTo('#files');
});
},
progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .progress-bar').css(
'width',
progress + '%'
);
}
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
});
$(函数(){
"严格使用",;
//将此更改为服务器端上载处理程序的位置:
var url='upload/';
$('#fileupload')。fileupload({
acceptFileTypes:/(\.\/)(gif | jpe?g | png)$/i,
上传目录:url,
上传url:url,
url:url,
数据类型:“json”,
完成:功能(e,数据){
$.each(data.result.files,函数(索引,文件){
$('').text(file.name).appendTo('#files');
});
},
progressall:功能(e、数据){
var progress=parseInt(data.loaded/data.total*100,10);
$('#progress.progress bar').css(
“宽度”,
进度+“%”
);
}
}).prop('disabled',!$.support.fileInput)
.parent().addClass($.support.fileInput?未定义:“已禁用”);
});
文件夹存在,并且具有正确的权限(0777),但当我尝试上载时,出现以下错误消息:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /upload/2017/abcd/ on this server.<br />
</p>
</body></html>
403禁止
被禁止的
您没有在此服务器上访问/上载/2017/abcd/的权限。
:
网址
包含请求发送到的URL的字符串
这应该是一个上传处理程序,例如一个PHP脚本,它将执行验证、命名和将文件移动到位的工作。上面显示的代码甚至包含一条注释,说明了相同的内容:
// Change this to the location of your server-side upload handler:
但看起来您正在使用url指定保存文件的目标目录:
var url = 'upload/<?= $year?>/<?= $logged_user?>';
这是一个你可以进行year/user/
目录定制的地方
至于您为什么会看到403禁止
错误:由于您指定了一个目录作为url
,因此fileupload
将在那里发布文件。您的url
没有尾随斜杠(upload/2017/abcd
),并且-作为一种方式-使用尾随斜杠访问同一目录。由于目录中没有合适的索引文件来处理请求(没有index.html
,index.php
,和/或您在Apache中配置的任何文件),Apache将尝试执行目录列表。但是,您禁用了目录列表(),因此您得到了一个禁止的403
。您应该能够通过查看浏览器devtools、单击网络选项卡并检查那里的请求来验证所有这些
作为旁注,您正在为Javascript中的
fileupload()
指定upload\u dir
和upload\u url
选项,但这些是我上面链接的后端PHP处理程序中的变量。它们是PHP变量,在您的Javascript中不会有任何影响,您应该删除它们以避免混淆。文件夹上载中有文件夹(2017)和(abcd)?是的,我已经为测试权限写了“文件夹存在”(上载,2017,abcd)至0777。chmod-R 0777 upload
将更改所有目录和子目录,如2017、abcd等,并允许任何用户/组对目录进行更改。对于windows:右键单击文件夹并更改权限我只是在尝试!也许我只能上传一个设置文件夹中的文件,我不能动态更改。。。。
'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/files/',