[OneDrive API] ネット上のファイルを OneDrive に保存
2015/2 に公開された新しい OneDrive API では、ファイルのアップロード方法が追加され、指定した URL のファイルを OneDrive にアップロード(保存)できます。※ 3/14 時点では Preview 機能です。
これまでのようにファイルのバイトデータを HTTP PUT する必要がなく、簡単に OneDrive にファイルを保存できます。Web アプリでは活用できそうな機能ですね。
さっそく、JavaScript サンプル を元に、コードを書いてみました。
認証後に実行される onAuthenticated 部分を書き換えています。
https://gist.github.com/jz5/6e960486050850c7e00d
コードでは、アップロード先は、Photos フォルダー (/drive/special/photos/) とし、URL と保存ファイル名は、直接記述しています。
API 詳細は、Upload an item to OneDrive from a URL (Preview) 参照。HTTP リクエストは POST メソッドで、Prefer Header の値に respond-async を指定する必要があります。
不具合と思われる現象
- アップロード成功時も done() が実行されない。レスポンスの JSON がパースできず fail() が実行されるようです。
- アップロードしたファイルを削除すると、同名のファイルをアップロードできない(HTTP レスポンスは 202 だが、ファイルがフォルダーに作成されていない)。同じコードで繰り返し動作確認しようとしたらできませんでした。