ページ

2008年1月26日土曜日

FireFoxから画像をドラッグ&ドロップして保存する(その2)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

> FireFoxの場合、ファイル名を取得するには別途 URLタイプのデータを
> Pasteboardから取り出す必要がある(サンプルは取り出している)。

以前の投稿で上記のように書いたが
FireFoxからリンク付きの画像をドロップした場合、"public.url"はリンクのURLが入り画像のファイル名が取れない。

他の flavor typeも試したがまるでダメ。
困っていたところ PasteboardCopyItemFlavorData(..,kPasteboardTypeFileURLPromise,..)の戻り値が -25133 (item flavor does not exist)になったことを思い出した。

もしかして呼び出し時点ではファイルが存在しないから "itm flavor does not exist"になっているのかもしれない。
そう思って、もう一度呼び出すようにした。そうしたら(ローカルに保存された)ファイル名が取得できた。

// 1回目: これでファイルが作成されるが、err == badPasteboardFlavorErr で、flavor_dataからは有効なデータが得られない
err = PasteboardCopyItemFlavorData(pboard, item_id, kPasteboardTypeFileURLPromise, &flavor_data);

// 2回目:flavor_dataにローカル保存されたファイル名が入る。
// 例)file://localhost/Users/hashi/Desktop/im20080121AS1D210BE2101200814.jpg
err = PasteboardCopyItemFlavorData(pboard, item_id, kPasteboardTypeFileURLPromise, &flavor_data);

試行錯誤にずいぶん時間がかかってしまったが分かってみるとこれもあっけなかった。
やれやれ。

次は簡単なスクラップブックを作ってみよう。