だいこんの日々2

軸足をtwitterとfacebookに移しつつも、技術的な話はここに書いていきます。

FancyUpload

PHPでのファイルのアップロードは味気ない&大きなファイルだと状況がわからないので、プログレスを表示しようと思い、FancyUploadというFlashを使ってみました。

まぁ、アップロードは確かにできるだがいろいろと問題が。

まず、認証が必要なページで認証を通過できなかった。詳しく調べるとCookieを送れていない。(後で気づいたが、FancyUploadのTips & Tricksにも書いてあった…。)
どうやらFirefoxとFlashという組み合わせだとFileReferenceで正常にCookieが送れない。「正常に」と書いたのは、別のCookieを送っている節があるから。Windows版Firefox用FlashはIEコンポーネントを使用して通信しているみたいだ。ひどくないか、これは。
ってことで、Ethna_Sessionを継承して、Firefox&Flashの時だけGETからセッション情報を取得するように変更して対策完了。

そして次の問題は、400 Bad Requestなどのエラーを返しても、アップロードがCompleteしてしまう。これじゃアップロードできたのかどうかわからんよ。これはFlash側で結果を受け取っていないので対策できず。Flashいじりたくないし。エラー処理の実装はされているのだけれど、なぜかonErrorイベントが起きず。でも他の人の書き込みを見ると正常に動いているような感じ。

ってことで、残念ながらFancyUploadはあきらめ。rc1でこれはちょっとな。