> ## Documentation Index
> Fetch the complete documentation index at: https://developer.box.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 事前チェック

export const Link = ({href, children, className, ...props}) => {
  const localizedHref = localizeLink(href);
  return <a href={localizedHref} className={className} {...props}>
      {children}
    </a>;
};

export const MultiRelatedLinks = ({sections = []}) => {
  if (!sections || sections.length === 0) {
    return null;
  }
  return <div className="space-y-8">
      {sections.map((section, index) => <RelatedLinks key={index} title={section.title} items={section.items} />)}
    </div>;
};

export const RelatedLinks = ({title, items = []}) => {
  const getBadgeClass = badge => {
    if (!badge) return "badge-default";
    const badgeType = badge.toLowerCase().replace(/\s+/g, "-");
    return `badge-${badge === "ガイド" ? "guide" : badgeType}`;
  };
  if (!items || items.length === 0) {
    return null;
  }
  return <div className="my-8">
      {}
      <h3 className="text-sm font-bold uppercase tracking-wider mb-4">{title}</h3>

      {}
      <div className="flex flex-col gap-3">
        {items.map((item, index) => <a key={index} href={item.href} className="py-2 px-3 rounded related_link hover:bg-[#f2f2f2] dark:hover:bg-[#111827] flex items-center gap-3 group no-underline hover:no-underline border-b-0">
            {}
            <span className={`px-2 py-1 rounded-full text-xs font-semibold uppercase tracking-wide flex-shrink-0 ${getBadgeClass(item.badge)}`}>
              {item.badge}
            </span>

            {}
            <span className="text-base">{item.label}</span>
          </a>)}
      </div>
    </div>;
};

事前チェックAPIを使用すると、アプリケーションでアップロードを開始する前にそのファイルがBoxに受け入れられるかどうかを確認できます。このAPIは、新しいファイルにも、既存ファイルの新しいバージョンのアップロードにも使用できます。

## チェックリスト

事前チェックでは、ファイルが実際にアップロードされるときと同じように、以下のすべてのチェックが実行されます。

* フォルダにアップロードするアプリケーションおよびユーザーの権限
* ファイル名の競合
* ファイルサイズの上限や制限
* フォルダおよびファイルの名前に関する制約事項
* フォルダおよびアカウントのストレージ容量

## 新しいファイルのチェック

新しいファイルのチェックを実行するには、実際のファイルをアップロードする場合と同じパラメータ (バイナリコンテンツを除く) を使用して<Link href="/reference/options-files-content">`OPTIONS /files/content`</Link> APIを呼び出してください。

<CodeGroup>
  ```sh cURL theme={null}
  curl -i -X OPTIONS "https://api.box.com/2.0/files/content" \
       -H "authorization: Bearer <ACCESS_TOKEN>" \
       -H "content-type: application/json" \
       -d '{"name":"Contract.pdf", "parent":{"id":"11446498"}}'
  ```

  ```typescript Node/TypeScript v10 theme={null}
  await client.uploads.preflightFileUploadCheck({
    name: newFileName,
    size: 1024 * 1024,
    parent: { id: '0' } satisfies PreflightFileUploadCheckRequestBodyParentField,
  } satisfies PreflightFileUploadCheckRequestBody);
  ```

  ```python Python v10 theme={null}
  client.uploads.preflight_file_upload_check(
      name=new_file_name, size=1024 * 1024, parent=PreflightFileUploadCheckParent(id="0")
  )
  ```

  ```cs .NET v10 theme={null}
  await client.Uploads.PreflightFileUploadCheckAsync(requestBody: new PreflightFileUploadCheckRequestBody() { Name = newFileName, Size = 1024 * 1024, Parent = new PreflightFileUploadCheckRequestBodyParentField() { Id = "0" } });
  ```

  ```java Java v10 theme={null}
  client.getUploads().preflightFileUploadCheck(new PreflightFileUploadCheckRequestBody.Builder().name(newFileName).size(1024 * 1024).parent(new PreflightFileUploadCheckRequestBodyParentField.Builder().id("0").build()).build())
  ```

  ```java Java v5 theme={null}
  String fileName = "My Doc.pdf";
  BoxFolder rootFolder = BoxFolder.getRootFolder(api);
  try {
      folder.canUpload(fileName, 98734576);

      // If the file upload would not have succeeded, it will not be attempted
      folder.uploadFile(fileContents, fileName);
  } catch (BoxAPIException ex) (

  )
  ```

  ```javascript Node v4 theme={null}
  // Verify that uploading a 200MB file named "Preso.ppt" to folder 12345 would succeed
  client.files.preflightUploadFile(
  		'12345',
  		{
  			name: 'Preso.ppt',
  			size: 200000000
  		},
  		null,
  		callback
  	);
  ```
</CodeGroup>

## 新しいファイルバージョンのチェック

新しいファイルバージョンのチェックを実行するには、実際のファイルをアップロードする場合と同じパラメータ (バイナリコンテンツを除く) を使用して<Link href="/reference/options-files-content">`OPTIONS /files/:id/content`</Link> APIを呼び出してください。

<CodeGroup>
  ```sh cURL theme={null}
  curl -i -X OPTIONS "https://api.box.com/2.0/files/12345/content" \
       -H "authorization: Bearer <ACCESS_TOKEN>" \
       -H "content-type: application/json" \
       -d '{"name":"Contract.pdf", "parent":{"id":"11446498"}}'
  ```

  ```javascript Node v4 theme={null}
  // Check if uploading a larger version of this file will succeed
  client.files.preflightUploadNewFileVersion('87646', {size: 300000000}, null, callback);
  ```
</CodeGroup>

## チェックと分割アップロード

<Link href="/guides/uploads/chunked">分割アップロード</Link>を実行する場合、<Link href="/guides/uploads/chunked/create-session">アップロードセッションの作成</Link>でも事前チェックが実行されるため、事前チェックは必須ではありません。

## レスポンスコード

APIコールで問題が検出されると、HTTP `409 Conflict`ステータスコードとともに可能性のある競合を説明するメッセージが返されます。問題が検出されなかった場合、HTTP `200 OK`ステータスコードが返され、アップロードを続行できます。

`200 OK`レスポンスは、アップロード呼び出しが実際に成功することを保証するものではありません。事前チェックによりアップロードの失敗が99%以上削減されることが実証されていますが、ファイルのアップロード時に同時実行の問題が発生する可能性は残っています。

非常にアクティブで、容量制限に近づいているフォルダ、一般的なファイル名、およびアカウントの場合、事前チェックで`200 OK`が返されたとしても、実際のアップロード中に競合が発生する可能性があります。

## レスポンスの本文

事前チェックでは多くの場合、競合が検出されるとAPIレスポンスで有益なデータが返されます。たとえば名前の競合が検出された場合、アプリケーションではエラーレスポンスで返される`SHA-1`を使用して、アップロードしようとしているファイルと既存ファイルが同一であるかどうかを確認できます。

<RelatedLinks
  title="関連するAPI"
  items={[
{ label: translate("Preflight check before upload"), href: "/reference/options-files-content", badge: "OPTIONS" },
{ label: translate("Upload file"), href: "/reference/post-files-content", badge: "POST" },
{ label: translate("Upload file version"), href: "/reference/post-files-id-content", badge: "POST" }
]}
/>

<RelatedLinks
  title="関連するガイド"
  items={[
{ label: translate("Upload New File"), href: "/guides/uploads/direct/file", badge: "GUIDE" },
{ label: translate("Upload File Version"), href: "/guides/uploads/direct/file-version", badge: "GUIDE" }
]}
/>
