Box Developerドキュメント

Box Developerドキュメントの新しいベータ版サイトがまもなくリリースされる予定です。最新の開発者向けガイド、APIリファレンス、AI搭載の検索により、Boxを使用した迅速な開発をサポートします。更新情報については今しばらくお待ちください。

新しいファイルのアップロード

ガイド アップロード 直接アップロード 新しいファイルのアップロード

新しいファイルのアップロード

直接アップロードによってBoxにファイルをアップロードするには、ファイルのコンテンツ、目的のファイル名、フォルダIDを使用して、POST /files/content APIにAPIコールを実行します。

アーカイブフォルダにファイルをアップロードするには、最初に、開発者コンソールでグローバルコンテンツマネージャ (GCM) スコープを有効にする必要があります。

cURL
curl -i -X POST "https://upload.box.com/api/2.0/files/content" \
     -H "authorization: Bearer <ACCESS_TOKEN>" \
     -H "content-type: multipart/form-data" \
     -F attributes='{"name":"Contract.pdf", "parent":{"id":"11446498"}}' \
     -F file=@<FILE_NAME>
Node/TypeScript v10
const fs = require('fs');

const attrs = { name: 'filename.txt', parent: { id: '0' } };
const body = {
  attributes: attrs,
  file: fs.createReadStream('filename.txt'),
};
const files = await client.uploads.uploadFile(body);
const file = files.entries[0];
console.log(`File uploaded with id ${file.id}, name ${file.name}`);
Python v10
client.uploads.upload_file(
    UploadFileAttributes(
        name=new_file_name, parent=UploadFileAttributesParentField(id="0")
    ),
    file_content_stream,
)
.NET v10
await client.Uploads.UploadFileAsync(requestBody: new UploadFileRequestBody(attributes: new UploadFileRequestBodyAttributesField(name: newFileName, parent: new UploadFileRequestBodyAttributesParentField(id: "0")), file: fileContentStream));
Swift v10
// Create InputStream for a file based on URL
guard let fileStream = InputStream(url: URL(string: "<URL_TO_YOUR_FILE>")!) else {
    fatalError("Could not read a file")
}

// Create a request body with the required parameters
let requestBody = UploadFileRequestBodyArg(
    attributes: UploadFileRequestBodyArgAttributesField(
        name: "filename.txt",
        parent: UploadFileRequestBodyArgAttributesFieldParentField(id: "0")
    ),
    file: fileStream
)

// Call uploadFile method
let files = try await client.uploads.uploadFile(requestBody: requestBody)

// Print some data from the reponse
if let file = files.entries?[0] {
    print("File uploaded with id \(file.id), name \(file.name!)")
}
Java v10
client.getUploads().uploadFile(new UploadFileRequestBody(new UploadFileRequestBodyAttributesField(newFileName, new UploadFileRequestBodyAttributesParentField("0")), fileContentStream))
.NET v6
await client.Uploads.UploadFileAsync(requestBody: new UploadFileRequestBody(attributes: new UploadFileRequestBodyAttributesField(name: newFileName, parent: new UploadFileRequestBodyAttributesParentField(id: "0")), file: fileContentStream));
Node v4
const fs = require('fs');

const attrs = { name: 'filename.txt', parent: { id: '0' } };
const body = {
  attributes: attrs,
  file: fs.createReadStream('filename.txt'),
};
const files = await client.uploads.uploadFile(body);
const file = files.entries[0];
console.log(`File uploaded with id ${file.id}, name ${file.name}`);

事前チェック

アップロードしたファイルが拒否されることによる時間や帯域幅の無駄を防ぐため、ファイルをアップロードする前に事前チェックを実行することをお勧めします。

リクエスト形式

このAPIのリクエスト本文には、multipart/form-dataのコンテンツタイプが使用されます。これを使用して、ファイル属性とファイルの実際のコンテンツの2つの部分を送信します。

最初の部分はattributesと呼ばれ、ファイル名や親フォルダのidなど、ファイルに関する情報を含むJSONオブジェクトが含まれています。

以下の例では、ユーザーのルートフォルダにtest.txtをアップロードしています。

POST /api/2.0/files/content HTTP/1.1
Host: upload.box.com
Authorization: Bearer [ACCESS_TOKEN]
content-length: 343
content-type: multipart/form-data; boundary=------------------------9fd09388d840fef1
--------------------------9fd09388d840fef1
content-disposition: form-data; name="attributes"

{"name":"test.txt", "parent":{"id":"0"}}
--------------------------9fd09388d840fef1
content-disposition: form-data; name="file"; filename="test.txt"
content-type: text/plain

Test file text.
--------------------------9fd09388d840fef1--

マルチパート本文のattributes JSON部分は、マルチパートフォームデータのfile 部分の前に置く必要があります。この順番を間違えると、APIがHTTP 400ステータスコードとエラーコードmetadata_after_file_contentsを返します。

オプション

ファイルのアップロード時に使用できるすべてのパラメータの詳細については、このAPIコールに関するリファレンスドキュメントを参照してください。パラメータには、設定することで転送中のファイルの破損を防ぐcontent-md5や、アップロード時間とは異なる時間をファイル作成時間として明示的に指定できる機能が含まれます。

制約事項

直接アップロードできるファイルサイズの上限は50 MBです。ファイルがこれより大きい場合は、分割アップロードAPIを使用してください。

アップロードの上限は、認証済みユーザーのアカウントの種類によって決まります。詳細については、このトピックに関するBoxコミュニティの記事を参照してください。