おとやすみ日記

ゲームプランナー、一児の父です。

FileReference.uploadでハマる落とし穴(ヒントになりそうなエントリ集めました)

アップロード対象のファイルが約 10 KB を超える場合、Windows 用の Flash Player は、転送が成功するかどうか検証するために、実際のファイルをアップロードする前にテストアップロードとして中身がゼロの POST を送信します。実際のファイル内容は、2 番目の POST に含まれます。ファイルのサイズが小さい場合、Flash Player は、アップロード対象のファイルを含む POST のアップロードのみを実行します。Macintosh 用 Flash Player は現在、POST テストアップロードを行っていません。

livedocsより抜粋して転載。

開発環境にBasic認証をかけていることが多々あるので、けっこうハマっちゃった人たくさんいると思います。かくいう僕もその一人です。上記のことを考えて実装してもまだダメな場合、原因はサーバー側にあることが考えられます。このへんはシステム担当の人とこのようなFlashの仕様(FileReferenceの)を共有しつつ作業しないと原因の特定が難しいですね。

Flash Player 8は10kb以上のファイルをアップロードをする際は、0サイズで一度接続テストをするとのことです。
Flash Playerが2度ファイルアップロード先に指定されたURLにアクセスすることにります。アクション先に指定されたアップロード用プログラムでは、Content-lengthをみて適切に処理する必要があるということですね。

Flash Player 9は、オプション扱いで設定により接続テストをするように変更されたとのこと。
デフォルトはしない(=false)になっているので、設定しないかぎりは2度アクセスされることはないようです。

FlashのFileReferenceでのファイルアップロードはFlashPlayerから直接ファイルがアップロードされるのだけど、 WindowsだとIEからリクエストされてるのと同じ感じになって(おそらくWinInet APIをつかっているからだと思う)、アクセス先がBasic認証とかかかっていてもIEの認証がとおっていればちゃんとファイルアップロードできる。

でも、OSXの場合は完全にFlashPlayerが独立しているらしく、Basic認証がかかっているとファイルアップロードできないようだ><

(unknownplace.org - 2007/10/26 - OSXのFileReferenceのエントリより抜粋)

unknownplace.org - 2007/10/26 - OSXのFileReference
http://unknownplace.org/memo/2007/10/26#e001
(弊社社員typesterさんのブログじゃないっすかw)


Flash/flexでのファイルアップロードに関するTechNote(FileReference API):nod::ぶろぐ::RIA::Flash/Flex/Ajax
http://www.noridon.net/weblogs/archives/2006/06/flashflextechno.html

FileReferenceとBasic認証 (Unknown Quality)
http://un-q.net/2008/05/as3_filereference_basic.html

FileReference.uploadにまけるな! - FLEXTIME FLASH
http://graphicker.jp/flextime/flash/archives/2008/05/as-upload.html

No Reason: FileReference.uploadでcookieが変になる件
http://www2.infective.jp/blog/2007/10/filereferenceuploadcookie.html

Apache .htaccessBasic認証 or IPアドレス制限 | Visual Components Systems
http://blog.visual-components.jp/2006/10/apache_htaccess_basic_or_ip.html

にゃあプロジェクト - ウェブログ - LoadVars.sendAndLoadでPHPと連携
http://www.project-nya.jp/modules/weblog/details.php?blog_id=518

FLASHとSSLとIEの関係 — Garage with Blue Sky
http://www.wedgeshape.com/wedge/gwbs/163

red日記: Flash + SSL
http://www.neetranger.com/red/2006/12/flash_ssl.html

red日記: FileReferenceでの問題。2
http://www.neetranger.com/red/2006/12/filereference2.html