[OneDrive API] ネット上のファイルを OneDrive に保存

2015/2 に公開された新しい OneDrive API では、ファイルのアップロード方法が追加され、指定した URL のファイルを OneDrive にアップロード(保存)できます。※ 3/14 時点では Preview 機能です。

これまでのようにファイルのバイトデータを HTTP PUT する必要がなく、簡単に OneDrive にファイルを保存できます。Web アプリでは活用できそうな機能ですね。

さっそく、JavaScript サンプル を元に、コードを書いてみました。

認証後に実行される onAuthenticated 部分を書き換えています。

コードでは、アップロード先は、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 だが、ファイルがフォルダーに作成されていない)。同じコードで繰り返し動作確認しようとしたらできませんでした。