ファイルバージョンをアップロード

post
https://upload.box.com/api/2.0
/files/:file_id/content/

ファイルのコンテンツを更新します。ファイルサイズが50MBを超える場合は、分割アップロードAPIを使用することをお勧めします。

リクエスト本文の順序

本文のattributes部分はfile部分のに置く必要があります。ファイルのアップロード時にリクエストがこの形式に従っていない場合は、HTTP 400エラーとmetadata_after_file_contentsエラーコードが返されます。

リクエスト

Bearer [ACCESS_TOKEN]
multipart/form-data

パスパラメータ

stringパス内必須
12345

ファイルを表す一意の識別子。

ファイルIDを確認するには、ウェブアプリケーションでファイルにアクセスして、URLからIDをコピーします。たとえば、URLがhttps://*.app.box.com/files/123の場合、file_id123です。

クエリパラメータ

string arrayクエリ内省略可能
id,type,name

応答に含める属性のカンマ区切りリスト。このパラメータを使用すると、標準の応答には通常含まれないフィールドをリクエストできます。

このパラメータを指定すると、明示的に指定しない限り標準フィールドは応答に含まれず、リクエストしたフィールドのほかには、簡易版レプリゼンテーションのフィールドしか返されないことに注意してください。

リクエスト本文

object本文内

アップロードされるファイルの追加の属性。主に名前と親フォルダ。これらの属性はマルチパートリクエスト本文に含まれており、JSON形式です。

本文のattributes部分はfile部分のに置く必要があります。ファイルのアップロード時にリクエストがこの形式に従っていない場合は、HTTP 400エラーとmetadata_after_file_contentsエラーコードが返されます。

string / date-timenull省略可能
2012-12-12T10:53:43-08:00

ファイルが最後に変更された日時を示します。

設定されていない場合は、アップロード日時が使用されます。

stringnull省略可能
Photo 2.0.png

ファイルの新しい名前(省略可)。指定した場合は、新しいバージョンがアップロードされると、ファイル名が変更されます。

string / binary本文内必須

Boxにアップロードするファイルのコンテンツ。

本文のattributes部分はfile部分のに置く必要があります。ファイルのアップロード時にリクエストがこの形式に従っていない場合は、HTTP 400エラーとmetadata_after_file_contentsエラーコードが返されます。

リクエストヘッダー

stringヘッダー内
省略可能
134b65991ed521fcfe4724b7d814ab8ded5185dc

ファイルが転送中に破損していないことを確認するための、ファイルのSHA1ハッシュを含むヘッダー(省略可)。

stringヘッダー内
省略可能
1

変更を加える前にこの項目が最近変更されていないことを確認します。

その項目の最後に認識されたetag値をこのヘッダーに渡すと、それ以降に項目が変更されている場合、エンドポイントは412 Precondition Failedを返して失敗します。

レスポンス

application/jsonFiles

リスト内の新しいファイルオブジェクトを返します。

If-Matchヘッダーがファイルの現在のetag値と一致しない場合にエラーを返します。これは、ファイルが前回リクエストされたときから変更されていることを示します。

予期しないクライアントエラー。

post
ファイルバージョンをアップロード
このドキュメント内で一部のAPIを試せるようになりました。
ログイン

リクエストの例

cURL
curl -X POST https://upload.box.com/api/2.0/files/12345/content \
     -H 'Authorization: Bearer <ACCESS_TOKEN>' \
     -H "Content-Type: multipart/form-data" \
     -F attributes='{"name":"Photo.jpg", "parent":{"id":"11446498"}}' \
     -F file=@<FILE_NAME>
.NET
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
    BoxFile file = await client.FilesManager
        .UploadNewVersionAsync("File v2.pdf", "11111", fileStream);
}
Java
BoxFile file = new BoxFile(api, "id");
FileInputStream stream = new FileInputStream("My File.txt");
file.uploadVersion(stream);
Python
file_id = '11111'
file_path = '/path/to/file.pdf'

updated_file = client.file(file_id).update_contents(file_path)
print('File "{0}" has been updated'.format(updated_file.name))
Node
var fs = require('fs');
var stream = fs.createReadStream('/path/to/file.pdf');
client.files.uploadNewFileVersion('11111', 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 = "updated file content".data(using: .utf8)
let task: BoxUploadTask = client.files.uploadVersion(
    forFile: "11111",
    name: "New file name.txt",
    contentModifiedAt: "2019-08-07T09:19:13-07:00",
    data: data
) { (result: Result<File, BoxSDKError>) in
    guard case let .success(file) = result else {
        print("Error uploading file version")
        return
    }

    print("New version of \(file.name) was uploaded")
}

// To cancel upload
if someConditionIsSatisfied {
    task.cancel()
}

レスポンスの例

{
  "entries": [
    {
      "id": 12345,
      "etag": 1,
      "type": "file",
      "sequence_id": 3,
      "name": "Contract.pdf",
      "sha1": "85136C79CBF9FE36BB9D05D0639C70C265C18D37",
      "file_version": {
        "id": 12345,
        "type": "file_version",
        "sha1": "134b65991ed521fcfe4724b7d814ab8ded5185dc"
      },
      "description": "Contract for Q1 renewal",
      "size": 629644,
      "path_collection": {
        "total_count": 1,
        "entries": [
          {
            "id": 12345,
            "etag": 1,
            "type": "folder",
            "sequence_id": 3,
            "name": "Contracts"
          }
        ]
      },
      "created_at": "2012-12-12T10:53:43-08:00",
      "modified_at": "2012-12-12T10:53:43-08:00",
      "trashed_at": "2012-12-12T10:53:43-08:00",
      "purged_at": "2012-12-12T10:53:43-08:00",
      "content_created_at": "2012-12-12T10:53:43-08:00",
      "content_modified_at": "2012-12-12T10:53:43-08:00",
      "created_by": {
        "id": 11446498,
        "type": "user",
        "name": "Aaron Levie",
        "login": "ceo@example.com"
      },
      "modified_by": {
        "id": 11446498,
        "type": "user",
        "name": "Aaron Levie",
        "login": "ceo@example.com"
      },
      "owned_by": {
        "id": 11446498,
        "type": "user",
        "name": "Aaron Levie",
        "login": "ceo@example.com"
      },
      "shared_link": {
        "url": "https://www.box.com/s/vspke7y05sb214wjokpk",
        "download_url": "https://www.box.com/shared/static/rh935iit6ewrmw0unyul.jpeg",
        "vanity_url": "https://acme.app.box.com/v/my_url/",
        "access": "open",
        "effective_access": "company",
        "effective_permission": "can_download",
        "unshared_at": "2018-04-13T13:53:23-07:00",
        "is_password_enabled": true,
        "permissions": {
          "can_download": true,
          "can_preview": true
        },
        "download_count": 3,
        "preview_count": 3
      },
      "parent": {
        "id": 12345,
        "etag": 1,
        "type": "folder",
        "sequence_id": 3,
        "name": "Contracts"
      },
      "item_status": "active",
      "allowed_invitee_roles": [
        "editor"
      ],
      "is_externally_owned": true,
      "has_collaborations": true
    }
  ],
  "total_count": 1
}