[英]Permission error on upload with blueimp jQuery-File-Upload
我對jQuery-File-Upload有問題。 我將其與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');
});
該文件夾存在,並且具有正確的權限(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>
根據文檔 :
網址
包含請求發送到的URL的字符串。
這應該是一個上載處理程序,例如PHP腳本,它將執行驗證,命名和將文件移動到位的工作。 您上面顯示的代碼甚至還包含一條注釋,說明同一件事:
// Change this to the location of your server-side upload handler:
但似乎您正在使用url指定目標目錄來保存文件到:
var url = 'upload/<?= $year?>/<?= $logged_user?>';
blueimp / jQuery-File-Upload發行版包含一組用於服務器端實現的PHP文件 ,看來index.php
應該是您應該指向url
的文件。 我不熟悉插件或后端處理程序,但是通過查看源代碼,我可以看到在第47行指定了上傳目錄的位置:
'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/files/',
那是您可以自定義year/user/
目錄的地方。
至於為什么看到403 Forbidden
錯誤:您已將目錄指定為url
,因此fileupload
將在其中發布文件。 您的url
沒有斜杠( upload/2017/abcd
), Apache會將其作為GET 轉發到帶有斜杠的相同目錄。 由於目錄中沒有合適的索引文件來處理請求(沒有index.html
, index.php
和/或您在Apache中配置為DirectoryIndex
任何文件),因此Apache將嘗試執行目錄列表。 但是,您已禁用目錄列表( Options -Indexes
),因此您得到403 Forbidden
。 通過瀏覽器devtools,單擊“網絡”選項卡,然后查看那里的請求,您應該能夠驗證所有這些信息。
附帶說明一下,您在Javascript中為fileupload()
指定了upload_dir
和upload_url
選項,但這些是我上面鏈接到的后端PHP處理程序中的變量。 它們是PHP變量,不會對Javascript產生任何影響,因此應刪除它們以避免混淆。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.