1

ユーザーのギャラリーに画像を送信する機能を提供します。

私たちが採用した通常の方法は問題なく機能しますが、一部の人は複数のファイルをアップロードするため、時間がかかる可能性があり、選択プロセスで(一度に1つずつ)煩わしいものになります。

私はそれを持っている人のためにGearsを使って別の方法を書き始めました。主な目標は、ファイルの選択を置き換え、アップロードの進行状況インジケーターを提供することです(これにより、複数の大きなファイルをアップロードする際のフラストレーションを軽減できます)。

私はこれをすべてやりました。

ここでMovieUploaderコード(http://uploadmovietool.appspot.com/)を参照しました。これは、チャンク方式を使用したファイルのアップロードを示しています。正しくアップロードしています。サーバーはチャンクを受け入れていますが、PHPで受信データを処理しようとすると問題が発生します。

各チャンクはスクリプトへの個別のリクエストであり、PHPの通常の受信データ変数、、などにデータは登録されていません_POST_GETただし、同じファイルにデータを追加する場合でも、_FILES最終的にデータを吸い上げることができました。$GLOBALS['HTTP_RAW_POST_DATA']、画像が完全になることはありません。部分が表示されますが、何かが常に間違っています。

..そうは言っても、進行状況の更新にアクセスしながら、スクリプトにファイルを投稿する簡単な方法があれば、ぜひ聞いてみたいと思います。

このプロジェクトを開始したとき、Gearsは通常のようにファイルを使用してマルチパート投稿を行う方法を提供し、進行状況情報を含む間隔でイベントを発生させるだけだと思っていました。これがどういうわけか可能であるなら(そして私は明らかにそれを逃しました)、私に知らせてください。

明確にするために: HTML5は進行メカニズムをサポートしていることを認識しており、実行可能になり次第、HTML5に基づいて実装する準備ができています。:)

詳細については、以下を参照してください。

投稿とともに送信するヘッダーは次のとおりです(Googleムービーアップローダーの例による)。

Request.setRequestHeader( 'Content-Disposition', 'attachment; filename="' + self._fileName + '"' );
Request.setRequestHeader( 'Content-Type', 'application/octet-stream' );
Request.setRequestHeader( 'Content-Range', 'bytes ' + byteRange );

助けてくれる人に感謝します。

4

1 に答える 1

0

あなたの説明から、PHPがファイルを正しく書き込んでいないようです。理由はわかりません。

ただし、これは厄介な問題です。たとえば、Facebook(ご存知のようにPHPも使用しています)は、この機能を実装するためのNPAPIプラグインを作成することに決めました。

http://www.facebook.com/note.php?note_id=178492968919

また、ブラウザ拡張機能を作成するための移植性の低いオプションを検討することもできます。これはFirefoxとChromeで非常に簡単に実行でき、これらのブラウザのユーザーに一時的なオプションを提供します。

于 2010-02-01T00:14:31.690 に答える