web-dev-qa-db-ja.com

PHP=

最大4 MBのファイルアップロードを受け入れるWebアプリケーションがあります。サーバー側のスクリプトはPHPで、WebサーバーはNGINXです。多くのユーザーは、ビデオなどのアップロードを許可するためにこの制限を大幅に増やすことを要求しています。

しかし、PHPでこの問題を解決する簡単な方法はないようです。まず、クライアント側で、転送中にファイルをチャンクできるものを探しています。 SWFUploadはそれをしていないようです。 Java FX( http://blogs.Oracle.com/rakeshmenonp/entry/javafx_upload_file )を使用してアップロードをストリーミングできると思いますが、 PHPのrequest.getInputStream。

ブラウザのclient_postの制限を増やすか、php.iniのアップロードまたはmax_execution timesは、ブラウザがタイムアウトし、メモリに保存されているすべてのBLOBを考慮する可能性があるため、本当に大きなファイル(〜1GB)の解決策ではありません。

サーバー側でPHP=を使用してこの問題を解決する方法はありますか?.

37
rjha94

plupload はjavascript/phpライブラリであり、非常に使いやすく、チャンク化が可能です。

ただし、HTML5を使用します。

11
Dean Rather

最大ファイルサイズのチャンクで大きなファイルを送信するJavaFXクライアント(2 MBを使用しています)と、チャンクを元のファイルにアセンブルするためのPHPレシーバースクリプト。コードをリリースしています。 Apacheライセンスはこちら: http://code.google.com/p/gigaupload/ use/modify/distributeにお気軽に。

3
rjha94

「しかし、PHPでrequest.getInputStreamに相当するものを見つけることができません。」

fopen('php://input');おそらく?

3

bigupload スクリプトを使用してみてください。統合は非常に簡単で、最大2 Gbのチャンクでアップロードできます。チャンクサイズはカスタマイズ可能です。

2
Amjad Farooq

tus protocol をご覧ください。これは、再開可能なファイルのアップロード用のHTTPベースのプロトコルであり、中断した場合にデータ全体を再度アップロードすることなく、中断した場所から続行できます。このプロトコルは、2017年5月から vimeoで採用 にもなりました。

プロトコルのさまざまな実装を異なる言語で見つけることができます こちら 。あなたの場合、 ppy と呼ばれるJavaScriptクライアントを使用し、サーバーで golang または php ベースのサーバー実装を使用できます。

1
Konsole

アップロード用にJavaアプレットを、処理用にPHPアプレットを使用してください。

Juploadのサンプルはこちらにあります: http://sourceforge.net/apps/mediawiki/jupload/index.php?title=PHP_Example

0
Chris

このパッケージ を使用できます

再開可能なチャンクのアップロードをサポートしています。

examples/js-examples/resumable-chunk-uploadの例では、ブラウザを閉じて再度開き、完了していないアップロードを再開できます。

0
Mahdi