新しいファイルのアップロード
新しいファイルのアップロード
直接アップロードによってBoxにファイルをアップロードするには、ファイルのコンテンツ、目的のファイル名、フォルダIDを使用して、POST /files/content
APIにAPIコールを実行します。
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>
TypeScript Gen
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 Gen
parent_client.uploads.upload_file(
UploadFileAttributes(
name=get_uuid(), parent=UploadFileAttributesParentField(id="0")
),
generate_byte_stream(1024 * 1024),
)
.NET Gen
await parentClient.Uploads.UploadFileAsync(requestBody: new UploadFileRequestBody(attributes: new UploadFileRequestBodyAttributesField(name: Utils.GetUUID(), parent: new UploadFileRequestBodyAttributesParentField(id: "0")), file: Utils.GenerateByteStream(size: 1024 * 1024)));
Java
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
FileInputStream stream = new FileInputStream("My File.txt");
BoxFile.Info newFileInfo = rootFolder.uploadFile(stream, "My File.txt");
stream.close();
Python
folder_id = '22222'
new_file = client.folder(folder_id).upload('/home/me/document.pdf')
print(f'File "{new_file.name}" uploaded to Box with file ID {new_file.id}')
.NET
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
BoxFileRequest requestParams = new BoxFileRequest()
{
Name = uploadFileName,
Parent = new BoxRequestEntity() { Id = "0" }
};
BoxFile file = await client.FilesManager.UploadAsync(requestParams, fileStream);
}
Node
var fs = require('fs');
var stream = fs.createReadStream('/path/to/My File.pdf');
var folderID = '0'
client.files.uploadFile(folderID, 'My File.pdf', stream)
.then(file => {
/* file -> {
total_count: 1,
entries:
[ { type: 'file',
id: '11111',
file_version:
{ type: 'file_version',
id: '22222',
sha1: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33' },
sequence_id: '0',
etag: '0',
sha1: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33',
name: 'My File.pdf',
description: '',
size: 68431,
path_collection:
{ total_count: 1,
entries:
[ { type: 'folder',
id: '0',
sequence_id: null,
etag: null,
name: 'All Files' } ] },
created_at: '2017-05-16T15:18:02-07:00',
modified_at: '2017-05-16T15:18:02-07:00',
trashed_at: null,
purged_at: null,
content_created_at: '2017-05-16T15:18:02-07:00',
content_modified_at: '2017-05-16T15:18:02-07:00',
created_by:
{ type: 'user',
id: '33333',
name: 'Test User',
login: 'test@example.com' },
modified_by:
{ type: 'user',
id: '33333',
name: 'Test User',
login: 'test@example.com' },
owned_by:
{ type: 'user',
id: '33333',
name: 'Test User',
login: 'test@example.com' },
shared_link: null,
parent:
{ type: 'folder',
id: '0',
sequence_id: null,
etag: null,
name: 'All Files' }
item_status: 'active' } ] }
*/
});
iOS
let data = "test content".data(using: .utf8)
let task: BoxUploadTask = client.files.upload(data: data, name: "Test File.txt", parentId: "0") { (result: Result<File, BoxSDKError>) in
guard case let .success(file) = result else {
print("Error uploading file")
return
}
print("File \(file.name) was uploaded at \(file.createdAt) into \"\(file.parent.name)\"")
}
// To cancel upload
if someConditionIsSatisfied {
task.cancel()
}
リクエスト形式
この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--
オプション
ファイルのアップロード時に使用できるすべてのパラメータの詳細については、このAPIコールに関するリファレンスドキュメントを参照してください。パラメータには、設定することで転送中のファイルの破損を防ぐcontent-md5
や、アップロード時間とは異なる時間をファイル作成時間として明示的に指定できる機能が含まれます。
制約事項
直接アップロードできるファイルサイズの上限は50 MBです。ファイルがこれより大きい場合は、分割アップロードAPIを使用してください。
アップロードの上限は、認証済みユーザーのアカウントの種類によって決まります。詳細については、このトピックに関するBoxコミュニティの記事を参照してください。