APIアップロードの完了と確認

マルチパートの全セグメントをアップロードしてセッションを1回完了し、失われたレスポンスをステータスから復旧して、返されたファイルレコードを安全に確認します。

最終確認日

スクリーンショットは英語版の画面です。

マルチパートの完了処理により、アップロード済みパートがファイルレコードになります。これはセッション作成時にnullでないresumableオブジェクトが返された場合にのみ適用されます。小さな単一PUTアップロードはアップロードURLで完了します。

四つのパネルに、アップロード済みパート番号の確認、マルチパート完了の送信、ステータスによる失われた受領情報の復旧、返されたファイルIDとバイト数の検証が表示されています。
四つのパネルに、アップロード済みパート番号の確認、マルチパート完了の送信、ステータスによる失われた受領情報の復旧、返されたファイルIDとバイト数の検証が表示されています。 スクリーンショットを原寸大で開く。

完了前に

パートをPUT /api/upload/:sessionId/part/:partNumberにアップロードしてください。パート番号は1から始まり、total_partsを超えることはできません。最後以外の各ボディは返されたpart_sizeと完全に同じサイズにします。最後のボディは空にできず、part_sizeより短くてもかまいません。現在のパートサイズは10 MiBで、どのボディもこの上限を超えることはできません。受け付け済みのパート番号を再送すると、バイトを再送する代わりに保存済みETagとalready_uploaded:trueが返されます。

GET /api/upload/:sessionId/statusはstatus、size_bytes、part_size、total_parts、bytes_uploaded、数値のuploaded_parts配列、has_multipartを返します。file_idは完了が成功するまでnullのままです。

手順

  1. セッションのステータスを取得し、uploaded_partsを1からtotal_partsまでのすべての番号と比較します。
  2. 不足パートのみ再送します。最後以外のpart_sizeを正確に保ち、以前の再試行に対するalready_uploaded:trueは成功として扱います。
  3. 必要なパートがすべて揃ったら、JSONボディなしでPOST /api/upload/:sessionId/completeを呼び出します。
  4. HTTP 201レスポンスのfile.id、実際のsize_bytes、version、etag、名前、拡張子、MIMEタイプ、リージョン、作成日時を保存します。
  5. 完了レスポンスが失われた場合は再試行前にステータスエンドポイントを照会します。status:"complete"とnullでないfile_idで結果を復旧できます。
  6. 読み取り可能な認証情報でGET /api/files/:fileIdを取得するか、dosyaで結果を確認し、保存先、ファイル名、実際のバイト数を比較します。

完了レスポンス

マルチパートの完了に成功するとcontent_hash:nullとhash_verified:falseが返されます。この真偽値は、結合されたパートがクライアントのダイジェストと照合されなかったことを示し、チェックサムの不一致を意味しません。

不明なセッションはUpload session not foundで拒否されます。ストレージにマルチパートが存在しない場合はNo multipart upload in progress - upload at least one part first、パートが揃っていない場合はOnly X of Y parts uploaded. Upload remaining parts before completing.が返されます。完了を繰り返すと409 Upload session is already completeが返されます。古くなった要求にはUpload session is no longer active - start the upload againが返されることがあります。

保留中、アップロード中、または失敗したマルチパートセッションは、24時間操作がないと古いセッションのクリーンアップ対象になります。実際に削除される時刻は保証されません。その後のアップロード初期化でクリーンアップが予定されることがあり、1時間ごとの請求ジョブはD1-homeを対象に上限付きの処理を実行します。Durable Object-homeのセッションはその後のメンバーの操作に依存します。バックストップとして、ストレージのライフサイクルは開始から7日後に未完了のマルチパート状態を中止します。

D1-homeワークスペースでは、請求ジョブが完了済みおよび失敗したセッションの行を7日後に削除するため、失われた完了レスポンスをステータスから復旧できるのはその保持期間内です。引用したクリーンアップ処理では、Durable Object-homeセッションに同じ行の保持期間があることは確認できません。ステータスルートが応答するうちに受領情報を速やかに復旧してください。保留中の行にはクリーンアップ処理で別途600秒の期限があり、更新されない認証情報の転送枠は15分後に自動回復します。完了時にはその枠が解放されます。最終的なストレージとデータベースへの書き込みはアップロードセッションから取り消せません。その後の削除には通常のファイルのゴミ箱移動と完全削除を使用します。

既存の同名ファイルに新しいバージョンとして追加されることがあります。別のファイルが必要な場合は、保存先に一意の名前を使用してください。

期待される結果

HTTP 201レスポンスが完了したファイルを特定し、アップロードされたパートから数えたバイト数を返します。その後のステータスリクエストはstatus:"complete"と同じファイル識別子を返します。

「APIアップロードの完了と確認」の参照画面。Get API KeyとView SDKsのリンクがあるdosya REST API概要ページです。
「APIアップロードの完了と確認」の参照画面。Get API KeyとView SDKsのリンクがあるdosya REST API概要ページです。 スクリーンショットを原寸大で開く。

関連ガイド

この記事は役に立ちましたか?

評価の結果を読み込んでいます…

投票すると、回答を変更できるように、必要な投票用Cookieが最長180日間保存されます。

質問と回答

このガイドの手順について質問できます。質問は確認後に公開されます。

公開の質問には、アカウントの詳細、認証情報、非公開ファイルを含めないでください。これらについては 非公開サポート をご利用ください。

質問を読み込んでいます…

    dosyaアカウントにサインインすると、質問を投稿できます。

    やり直す前に結果を確認

    操作をもう一度確認する必要があるときは、次の共通の確認事項をご利用ください。