takk新しいWEBサービスでファイルアップロードを実装することに。できれば複数ファイルをドラッグ&ドロップできるようなイマドキなの。Uploadなどを試してみるが、痒い所に手が届かず自作することに。一つのファイルをアップするだけならinputのtype=fileで一発なんだけど、ドラッグ&ドロップとなると難易度も上がる。APIという機能を使うと比較的楽に作れる。対応はモダンブラウザのみでIE8も未対応。mixiでもこの方式を採用している。一つFlashを利用する方法があるが、その開発はコストに見合わない。幸いにもサイトのターゲットにIE使いは少なそうなので、IEの複数ファイルアップロードには対応しないことに。先人の知恵を拝借する作業の始まり。しばやん雑記を参考に作り始め。しばやん雑記のおかげで一応シンプルなバージョンの完成。次はアップロード中の進捗のプログレスバー表示。POSTのアップロード中に転送完了分のサイズを取得するには、現在3つの方法がある。FlashAPCというPHPアクセラレータの機能のひとつPHP5.4の新機能Flashは使いたくないしPHPは5.3.3から変えたくなかったのでAPCを使うことに。利用してファイルアップロードの進行状況を表示するまずはSakuraのVPSにAPCをインスコ。apcの設定でrfc1867をonに。他はすべてデフォルトで。restartこれでサクッといけると思えたんだけど、ここで最大の山場が。進捗の取得手段は、ファイルをアップする時にhiddenでAPC_UPLOAD_PROGRESSにキーを渡して同時にアップし、別のアクセスから、このキーのアップロードどれくらい進んでる?って1秒間隔くらいで聞いてあげる。APIのオブジェクトをajaxでアップするから、ちょっと勝手が違ってhiddenとかない。具体的にはこんな感じのJS。false});ここでAPC_UPLOAD_PROGRESSをappendする順番をfileの前に記述しないと進捗は表示されない。これで3時間くらい潰す。php.netのapc.rfc1867に答えがありました。フィールドよりも前にこなければならないことに注意しましょう。しないと、アップロードの進捗処理が正しく動作しません。APIを使った複数ファイルのドラッグ&ドロップアップロードwith進捗プログレスバー表示が何とか形になりました。アマゾンの商品をお得に買う方法アマゾンでの買い物は、アマゾンギフトカードにチャージして購入すれば最大2.5%還元されます。ヘビーユーザーなら年間で結構変わってくると思うので、まだやっていない方は切り替えた方がお得です。