簡體   English   中英

使用blueimp jQuery-File-Upload上傳時出現權限錯誤

[英]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.htmlindex.php和/或您在Apache中配置為DirectoryIndex任何文件),因此Apache將嘗試執行目錄列表。 但是,您已禁用目錄列表( Options -Indexes ),因此您得到403 Forbidden 通過瀏覽器devtools,單擊“網絡”選項卡,然后查看那里的請求,您應該能夠驗證所有這些信息。

附帶說明一下,您在Javascript中為fileupload()指定了upload_dirupload_url選項,但這些是我上面鏈接到的后端PHP處理程序中的變量。 它們是PHP變量,不會對Javascript產生任何影響,因此應刪除它們以避免混淆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM