APIのダウンロードをディスクにストリーミングする
dosyaの保護されたダウンロードリダイレクトをAPIキーを転送せずにたどり、ストレージのバイトをディスクにストリーミングして、保存したファイルをメタデータと照合します。
最終確認日
スクリーンショットは英語版の画面です。
標準のダウンロードルートはリクエストを認可した後、5分間有効な署名済みストレージURLへのHTTP 302を返します。rawルートはdosya上に留まり、バイト範囲に対応します。これらは異なる仕様です。302応答自体はファイルストリームではありません。

始める前に
- 読み取りスコープのAPIキーで十分ですが、ワークスペースのロールにはファイルページへのアクセスと
download_filesが必要です。 - ファイルIDを確認してください。以前のバージョンには
version=Nを追加し、ロック解除トークンを受け取った場合に限りut=tokenを追加してください。 - 中断された応答で正常なファイルを上書きしないよう、一時的なローカルパスに書き込んでください。
手順
- 先にメタデータを取得し、想定する名前とサイズを記録してください。選択したバージョンやロック解除の条件が呼び出し元の意図と異なる場合は処理を拒否してください。
- 自動リダイレクトを無効にして
GET /api/files/file_id/downloadをリクエストしてください。302を確認し、Locationを読み取ってください。署名済みURLは通常300秒後に期限切れになります。 AuthorizationやdosyaのAPIキーを付けず、別のリクエストでLocationを開いてください。オブジェクト全体をバッファーに保存せず、応答のチャンクを一時ファイルにストリーミングしてください。- または
GET /api/files/file_id/download-urlを呼び出してください。JSONにはurl、size、name、regionが含まれます。リクエストするTTLの初期値は300秒、上限は3600秒です。 - バイト転送を再開するには
GET /api/files/file_id/rawとRange: bytes=start-を使用してください。206とAccept-Rangesが返ります。オブジェクトの範囲外には416が返ります。 - ストリームが閉じたら、書き込んだバイト数をメタデータまたはdownload-urlの
sizeと比較してください。検証後にのみ一時ファイルの名前を変更して所定の場所に配置してください。

期待される結果
クライアントはストレージホストにAPI認証情報を渡さず、オブジェクト全体を保存します。完全なダウンロードは想定バイト数と一致し、再開したrawリクエストは正しい残りの範囲を返します。
トラブルシューティング
最初の応答が302です。 これは標準ルートの成功時の仕様です。認証情報を付けないリクエストでLocationをたどってください。
署名済みURLの有効期限が切れました。 再認可後に新しいURLをリクエストしてください。クエリ文字列を編集しないでください。
rawリクエストが416を返します。 ローカルの部分ファイルのサイズを現在のリモートサイズと比較してください。部分ファイルが大きすぎる場合や別のバージョンに属する場合は、最初からやり直してください。
関連ガイド
この記事は役に立ちましたか?
評価の結果を読み込んでいます…
投票すると、回答を変更できるように、必要な投票用Cookieが最長180日間保存されます。
質問と回答
このガイドの手順について質問できます。質問は確認後に公開されます。
公開の質問には、アカウントの詳細、認証情報、非公開ファイルを含めないでください。これらについては 非公開サポート をご利用ください。
質問を読み込んでいます…
dosyaアカウントにサインインすると、質問を投稿できます。