2

jQuery に依存しない FineUploader を PHP のエラー報告スクリプトの例と共に使用して、ファイルをアップロードしています。チャンクとレジュームがオンになっています。すべての処理は、変更を加えていない PHP サンプル スクリプトからのものです。

最大 90 MB のテスト ファイルでは正常に動作しますが、329 MB のファイルをアップロードしようとすると、アップロードは開始されますが、「ファイルが空です」というエラーで中止されます。

チャンク フォルダーから、エラーが発生する前に約 77 MB のファイルがアップロードされていることがわかります。再開しようとしても機能せず、チャンク ディレクトリのサイズも増加しません。

環境: LAMP、Centos 6.3。

post_max_sizeどちらもphp.iniでupload_max_filesize2048Mに設定されています。

この原因についての兆候はありますか?追加情報を提供させていただきます。

アップローダ コード:

<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>

編集: コンソール情報:

[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}
4

1 に答える 1

2

この (あまり役に立たない) エラーが発生している場合は、さまざまな原因が考えられるため、すべてを確認することをお勧めします。この回答は、このエラーが発生すると思われる「非常に大きな」ファイルのコンテキストにあります。

php.ini で、次のことを確認してください。

post_max_sizeファイルサイズをカバーするのに十分な大きさに設定されています(最大2G)

upload_max_filesizeファイルサイズをカバーするのに十分な大きさに設定されています(最大2G)

これpost_max_sizeは( http://www.php.net/manual/en/ini.core.php#ini.post-max-sizeupload_max_filesizeで推奨されているように)よりも大きく、よりも大きくなっています。これらの要因のいずれかにより、スーパーグローバルが空として返され、アップロードでエラーが発生する可能性があります。memory_limitpost_max_size$_FILES

php.ini で試すその他のこと:

これmax_execution_timeは、アップロードの期間を考慮して増加され (通常、大きなファイルはデフォルトの 30 より長くかかります)、max_input_timeそれに応じて増加します。

LimitRequestBodyこれは php.ini で指定されたものを上書きする可能性があるため、ディレクティブを使用して httpd.conf を変更する必要がある場合もあります。これはバイト単位で指定され、httpd.conf または .htaccess ファイルで直接指定できます (オーバーライド特権があると仮定します)。次のように、(セキュリティのために) ディレクトリごとにこれを指定することもできます。

<Directory "/var/www/myuploaddir/">
        LimitRequestBody 1073741824
</Directory>

最後に、アップロードするファイル用に十分な一時ストレージと非一時ストレージがあることも確認してください。パッケージは「容量不足」エラーをキャッチしません。

于 2013-05-16T15:19:01.747 に答える