Я использую 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>
Может кто-нибудь сказать мне, что происходит пожалуйста?