ユーザーのギャラリーに画像を送信する機能を提供します。
私たちが採用した通常の方法は問題なく機能しますが、一部の人は複数のファイルをアップロードするため、時間がかかる可能性があり、選択プロセスで(一度に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 );
助けてくれる人に感謝します。