APIアップロード時のファイルサイズを検証

宣言サイズと実測サイズの制限を適用し、SHA-256による整合性確認を追加して、dosyaの保存済みファイルの受領情報から最終的な実測バイト数を読み取ります。

最終確認日

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

dosyaはバイトを受け入れる前に宣言サイズを確認し、読み取りながらボディを測定します。一括アップロードには十進数のContent-Lengthが必要です。50 MiBを超えるファイルにはアップロードセッションの手順を使用してください。

四つのパネルに、元ファイルのサイズ測定、一括転送または再開可能な転送の選択、SHA-256の確認、保存サイズの受領情報の検証が表示されています。
四つのパネルに、元ファイルのサイズ測定、一括転送または再開可能な転送の選択、SHA-256の確認、保存サイズの受領情報の検証が表示されています。 スクリーンショットを原寸大で開く。

始める前に

  • APIキーのmax_file_size_bytes、ワークスペースのストレージ容量の上限、ワークスペースのmax_file_size_gb設定を確認します。RESTアップロードにはロール単位のファイルサイズ上限は適用されません。
  • キーが選択したワークスペースにアクセスでき、メンバーロールがこのRESTアップロードに対してupload_filesとaccess_uploadを許可している必要があります。
  • エンドツーエンドでバイトの一致が重要な場合は、小文字64文字のSHA-256ダイジェストを計算します。
  • Content-Lengthは制限として扱い、保存サイズの証明とは見なさないでください。最終的な受領情報には実際に受信したバイト数が反映されます。

手順

  1. 転送前に元ファイルを測定します。50 MiB以下は一括アップロードを使用し、それを超える場合は再開可能なアップロードを初期化します。
  2. 一括転送では数字のみのContent-Lengthを送信します。長さの欠落や不正な形式には411、50 MiBを超える場合はFiles over 50 MB use /api/upload/init and the resumable uploadとともに413が返されます。
  3. 利用できる場合はX-Dosya-Sha256: digestを追加します。不一致の場合はhash_mismatch、期待値、受信値とともに400が返されます。
  4. ステータスとJSONエラーを保持しながらボディを送信します。実測したボディが許容バッファーを超えると、upload_declared_size_mismatchとともに413が返されることがあります。
  5. ポリシーによる拒否はその内容に従って対処します。This API key does not permit files larger than N bytes (max_file_size_bytes)、File exceeds the X GB size limit for this workspace、またはストレージ容量の上限に関するレスポンスを確認してください。
  6. 成功したら受領情報の実際の保存サイズとファイルIDを読み取り、メタデータを取得します。宣言より受信バイトが少ないという理由だけで成功したアップロードを拒否せず、実測結果とダイジェストに基づいて判断します。
APIアップロード時のファイルサイズ検証に使用するAPIとSDKへのリンクがあるdosya開発者向け概要ページです。
APIアップロード時のファイルサイズ検証に使用するAPIとSDKへのリンクがあるdosya開発者向け概要ページです。 スクリーンショットを原寸大で開く。

期待される結果

許可されたボディでは、実測サイズがメタデータと一致するファイルの受領情報が返されます。任意のSHA-256でバイトを確認できます。サイズ超過、許可されていない入力、破損した入力は、信頼できる結果になる前に拒否されます。

トラブルシューティング

サーバーが411を返す。 実際のバイト長を十進数で指定してください。チャンク化された一括転送でもこの指定は必要です。

ファイルが50 MiBを超えている。 /api/upload/init、10 MiBのパート、完了ルートを使用してください。

宣言サイズと保存サイズが異なる。 受領情報を正とし、ダイジェストを比較して、続行する前に送信元を調査してください。

関連ガイド

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

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

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

質問と回答

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

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

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

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

    やり直す前に結果を確認

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