Проблема с загрузкой файлов; XMLHttpRequest (XHR) никогда не вызывается и загрузка застревает на 100% - PullRequest
0 голосов
/ 29 февраля 2020

Я использую Tiny File Manager в качестве отправной точки для моего проекта: https://tinyfilemanager.github.io/

Чтобы проверить функциональность, я настроил его на Ubuntu (16.04.7) веб-сервер, работающий под Apache 2 с PHP 7.0.33.

У меня есть папка с несколькими тестовыми файлами, все ZIP-файлы, все с одинаковыми разрешениями, но разных размеров.

Большие файлы (от 1,4 МБ до 4 МБ) загружаются без проблем, но меньшие (от 0,4 МБ до 0,9 МБ) застревают на 100%, а вызов Ajax просто никогда не выполняется.

progress: 95.84140911112453 | 523665 index.php:139:22
progress: 100 | 546387 index.php:139:22
progress: 95.84140911112453 | 523665 index.php:139:22
progress: 100 | 546387

Результат в Firefox: сервер ответил с кодом 0. а в Chrome: ошибка: тайм-аут сервера

Я могу вручную распаковать zip-файлы, чтобы они не были повреждены. Файлы большего размера могут быть загружены, так что это не проблема ограничения размера файла. Код достаточно прост, и я даже не изменил его

HTML

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]) . '?p=' . fm_enc(FM_PATH) ?>" class="dropzone card-tabs-container" id="fileUploader" enctype="multipart/form-data">
  <input type="hidden" name="p" value="<?php echo fm_enc(FM_PATH) ?>">
  <input type="hidden" name="fullpath" id="fullpath" value="<?php echo fm_enc(FM_PATH) ?>">
  <div class="fallback">
    <input name="file" type="file" multiple/>
  </div>
</form>

JS

<script>
    Dropzone.options.fileUploader = {
        timeout: 120000,
        maxFilesize: <?php echo MAX_UPLOAD_SIZE; ?>,
        acceptedFiles : "<?php echo getUploadExt() ?>",
        init: function () {
            this.on("sending", function (file, xhr, formData) {
                console.log(xhr);
                console.log(formData);
                let _path = (file.fullPath) ? file.fullPath : file.name;
                document.getElementById("fullpath").value = _path;
                console.log(_path);
                xhr.ontimeout = (function() {
                    toast('Error: Server Timeout');
                });
            }).on("success", function (res) {
                let _response = JSON.parse(res.xhr.response);
                if(_response.status == "error") {
                    toast(_response.info);
                }
            }).on("error", function(file, response) {
                toast(response);
            });
        }
    }
</script>

Может кто-нибудь сказать мне, что происходит пожалуйста?

...