Я вырываю свои волосы. С помощью plupload с кусками на php-сервере. Chunked (или не chunked в этом отношении) идет хорошо, пока я не использую файлы> 100 МБ.
Я хотел бы иметь возможность использовать файлы до 1 Гб. Продолжайте получать сообщение об ошибке, а затем повторные попытки запуска и процент снова на 0% и перезапуск.
Также нет предварительного запроса OPTION. Я даже сделал быстрый бэкэнд NodeJS, используя Узел-pluploader, это обрабатывает куски, но та же самая проблема и ошибки там (хотя это действительно отправило предполетный вариант).
Любой совет будет принята с благодарностью
Дополнительные директивы Apache
LimitRequestBody 0
Настройки PHP
file_uploads On
max_file_uploads 20
max_execution_time 3600
memory_limit 640M
post_max_size 600M
upload_max_filesize 500M
JS
var uploader = new plupload.Uploader({
runtimes : 'html5,silverlight,html4',
browse_button : 'pickfiles',
url : '<?php echo SITE_URL; ?>admin?sub=upload',
silverlight_xap_url : '<?php echo SITE_URL; ?>lib/Moxie.xap',
multi_selection : false,
max_retries: 10,
filters : {
max_file_size : '1024mb',
chunk_size: '10mb',
},
init: {
FilesAdded: function(up, files) {
plupload.each(files, function(file) {
$('#document-file').html(file.name);
});
},
UploadProgress: function(up, file) {
$('#spinner-progress').html( " " + file.percent + "%" );
},
Error: function(up, err) {
console.warn("Error #" + err.code + ": " + err.message);
},
UploadComplete: function(up, files) {
console.log(files[0]);
}
}
});
uploader.init();
бэкэнд загрузчика
<?php
require_once(LIB.SLASH."PluploadHandler.php");
PluploadHandler::no_cache_headers();
PluploadHandler::cors_headers();
if (!PluploadHandler::handle(array(
'tmp_dir' => UPL_TMP_PATH,
'target_dir' => UPL_TMP_PATH
))) {
die(json_encode(array(
'OK' => 0,
'error' => array(
'code' => PluploadHandler::get_error_code(),
'message' => PluploadHandler::get_error_message()
)
)));
} else {
die(json_encode(array('OK' => 1)));
}
Я использую без изменений пример plupload-handler-php
Оказалось, что это принудительная настройка в конфиге ngnix. Значение client_max_body_size было принудительно установлено на 128 м по шаблону Plesk по умолчанию (default / domain / nginxDomainVirtualHost.php). Отменив этот параметр, Plesk вернул «двойную» ошибку, которая в конечном итоге привела меня к этот ответ. Сделайте собственный шаблон, обновите vhosts. Задача решена!
Других решений пока нет …