Php 使用blueimp jQuery文件上载时出现权限错误

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 = '

我对jQuery文件上传有问题。我将它与PHP代码一起使用,我希望根据登录的用户将文件上传到不同的文件夹中。 例如,如果登录用户的代码为“abcd”,我希望在“upload/2017/abcd/”中上载该文件

为此,我编写了以下代码:

$(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/',