Я использую не-jQuery зависимый FineUploader с примером сценария ошибок PHP, чтобы загрузить файл. Включены и возобновляются перезапуск. Вся обработка выполняется из сценариев примера PHP без каких-либо изменений.
Успешно работает в тестовых файлах до ~ 90 мб, однако при попытке загрузить файл 329mb загрузка начинается, а затем прерывается с ошибкой «Файл пуст».
Из моей папки chunk я вижу, что перед ошибкой было загружено примерно 77 мб файла. Попытки возобновить работу не работают и не увеличивают размер каталога фрагментов.
Окружающая среда: LAMP, Centos 6.3.
post_max_size
и upload_max_filesize
установлены в 2048M в php.ini.
Любое указание на причину этого? С удовольствием предоставляем дополнительную информацию.
Код загрузчика:
<div id="failed-fine-uploader"></div> <script> function createUploader() { var faileduploader = new qq.FineUploader({ element: document.getElementById('failed-fine-uploader'), request: { endpoint: 'example.php' }, chunking: { enabled: true }, resume: { enabled: true }, failedUploadTextDisplay: { mode: 'custom', maxChars: 40, responseProperty: 'error', enableTooltip: true } }); } window.onload = createUploader; </script>
EDIT: Информация о консоли:
[17:31:09.314] [FineUploader] Processing 1 files or inputs... [17:31:09.315] [FineUploader] Resuming CentOS-6.3-x86_64-minimal.iso at partition index 40 [17:31:09.316] [FineUploader] Sending chunked upload request for item 4: bytes 80000001-82000000 of 346011648 [17:31:09.504] [FineUploader] xhr - server response received for 4 [17:31:09.504] [FineUploader] responseText = {"error":"File is empty.","uploadName":null}
Если вы испытываете эту (весьма бесполезную) ошибку, это может быть несколько вещей, поэтому я бы посоветовал проверить их все. Этот ответ находится в контексте «очень больших» файлов, где эта ошибка возникает.
В вашем php.ini проверьте, чтобы:
post_max_size
устанавливается достаточно высоко, чтобы покрыть размер файла (макс. 2G)
upload_max_filesize
установлен достаточно высоко, чтобы покрыть размер файла (макс. 2G)
То, что post_max_size
больше, чем upload_max_filesize
(как рекомендовано http://www.php.net/manual/en/ini.core.php#ini.post-max-size ), и что memory_limit
больше, чем post_max_size
. Любой из этих факторов может привести к тому, что $_FILES
возвращение $_FILES
пустым и выведет ошибку из загрузки.
Другие вещи, чтобы попробовать в php.ini:
То, что max_execution_time
увеличивается, чтобы принять во внимание длительность загрузки (большие файлы обычно занимают больше времени, чем значение по умолчанию 30), а также увеличивается max_input_time
.
Вам также может потребоваться изменить ваш httpd.conf с LimitRequestBody
директивы LimitRequestBody
поскольку это может быть переопределением всего, что указано в php.ini. Это указано в байтах и может быть указано либо непосредственно в httpd.conf, либо в файле .htaccess (при условии, что у вас есть Override priviliges). Вы также можете указать это для каждого каталога (для обеспечения безопасности) следующим образом.
<Directory "/var/www/myuploaddir/"> LimitRequestBody 1073741824 </Directory>
Наконец, также убедитесь, что у вас есть достаточное временное и не временное хранилище для загружаемого файла. Пакет не улавливает ошибки «вне пространства».