ZIPアーカイブのダウンロード
ZIPアーカイブのダウンロード
フォルダ内のすべてのファイル、またはフォルダ構造全体をダウンロードするには、ZIPアーカイブを作成してダウンロードする必要があります。
ZIPアーカイブの作成
最初に、ファイルまたはフォルダ構造を含むZIPアーカイブを作成する必要があります。アカウントのアップロード上限に達しない限り、最大10,000のファイルまたはフォルダIDを含めることができます。
cURL
curl -i -X POST "https://api.box.com/2.0/zip_downloads" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-d '{
"download_file_name": "January Financials",
"items": [
{
"type": "file",
"id": "12345"
},
{
"type": "file",
"id": "34325"
},
{
"type": "folder",
"id": "45678"
}
]
}'
Java
ArrayList<BoxZipItem> items = new ArrayList<BoxZipItem>();
BoxZipItem file = new BoxZipItem("file", "12345");
BoxZipItem folder = new BoxZipItem("folder", "156472");
items.add(file);
items.add(folder);
BoxZip zip = new BoxZip(api);
BoxZipInfo zipInfo = zip.create("Awesome Zip File", items);
Node
var name = 'test',
items = [
{
type: 'file',
id: '466239504569'
},
{
type: 'folder',
id: '466239504580'
}
];
client.files.createZip(name, items)
.then(zip => {
/* zip -> {
"download_url": "https://api.box.com/2.0/zip_downloads/124hfiowk3fa8kmrwh/content",
"status_url": "https://api.box.com/2.0/zip_downloads/124hfiowk3fa8kmrwh/status",
"expires_at": "2018-04-25T11:00:18-07:00",
"name_conflicts": [
[
{
"id": "100",
"type": "file",
"original_name": "salary.pdf",
"download_name": "aqc823.pdf"
},
{
"id": "200",
"type": "file",
"original_name": "salary.pdf",
"download_name": "aci23s.pdf"
}
],
[
{
"id": "1000",
"type": "folder",
"original_name": "employees",
"download_name": "3d366a_employees"
},
{
"id": "2000",
"type": "folder",
"original_name": "employees",
"download_name": "3aa6a7_employees"
}
]
]
}
*/
});
レスポンスは以下のようになります。
{
"download_url":"https://dl.boxcloud.com/2.0/zip_downloads/25gvaXcIE4QJlinNiw2oHAQ==ZFs3Q2Xpd7pKBz7OyzXNrUaoW3aJxQRN5znAvyM-KpdEEPdWcQDKU-Dl85Ew/content",
"status_url":"https://api.box.com/2.0/zip_downloads/25gvaXcIE4QJlinNiw2oHAQ==ZFs3Q2Xpd7pKBz7OyzXNrUaoW3aJxQRN5znAvyM-KpdEEPdWcQDKU-Dl85Ew/status",
"expires_at":"2023-02-28T10:23:54Z",
"name_conflicts":[]
}
ZIPダウンロードIDの抽出
ZIPアーカイブをダウンロードするには、ZIPダウンロードIDが必要です。これは、アーカイブの作成時に返されたレスポンスで確認できます。
status_url
に移動し、zip_downloads
とcontent
の間にあるIDをコピーします。
25gvaXcIE4QJlinNiw2oHAQ==ZFs3Q2Xpd7pKBz7OyzXNrUaoW3aJxQRN5znAvyM-KpdEEPdWcQDKU-Dl85Ew
ファイルのダウンロード
以下のサンプルのように、ファイルの場所のURLにダウンロードIDを配置して、適切なファイルを指します。
cURL
curl -L GET "https://dl.boxcloud.com/2.0/zip_downloads/29l00nfxDyHOt7RphI9zT_w==nDnZEDjY2S8iEWWCHEEiptFxwoWojjlibZjJ6geuE5xnXENDTPxzgbks_yY=/content" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-o sample_curl.zip
.NET
BoxZipRequest request = new BoxZipRequest();
request.Name = "test";
request.Items = new List<BoxZipItemRequest>();
var file = new BoxZipRequestItem()
{
Id = "466239504569",
Type = BoxZipItemType.file
};
var folder = new BoxZipRequestItem()
{
Id = "466239504580",
Type = BoxZipItemType.folder
};
request.Items.Add(file);
request.Items.Add(folder);
Stream fs = new FileStream(@"c:\temp\MyTest.zip");
BoxZipDownloadStatus status = await _filesManager.DownloadZip(request, fs);
Java
ArrayList<BoxZipItem> items = new ArrayList<BoxZipItem>();
BoxZipItem file = new BoxZipItem("file", "12345");
BoxZipItem folder = new BoxZipItem("folder", "156472");
items.add(file);
items.add(folder);
BoxZip zip = new BoxZip(api);
FileOutputStream stream = new FileOutputStream();
BoxZipDownloadStatus zipDownloadStatus = zip.download("Another Awesome Zip File", items, stream);
stream.close();
if (zipDownloadStatus.getState() == BoxZipDownloadStatus.State.SUCCEEDED) {
System.out.println("Zip downloaded successfully");
}
Python
name = 'test'
file = mock_client.file('466239504569')
folder = mock_client.folder('466239504580')
items = [file, folder]
output_file = open('test.zip', 'wb')
status = client.download_zip(name, items, output_file)
print(f'The status of the zip download is {status["state"]}')
Node
var name = 'test',
items = [
{
type: 'file',
id: '466239504569'
},
{
type: 'folder',
id: '466239504580'
}
],
stream = new Readable();
client.files.downloadZip(name, items, stream)
.then(status => {
/* status -> {
"total_file_count": 20,
"downloaded_file_count": 10,
"skipped_file_count": 10,
"skipped_folder_count": 10,
"state": "succeeded"
}
*/
});
ダウンロードに時間がかかる場合は、ステータスのエンドポイントを使用してダウンロードのステータスを監視できます。これにより、ダウンロードの進行状況のほか、スキップされた可能性のある項目の数を確認できます。
cURL
curl -i -X GET "https://api.box.com/2.0/zip_downloads/29l00nfxDyHOt7RphI9zT_w==nDnZEDjY2S8iEWWCHEEiptFxwoWojjlibZjJ6geuE5xnXENDTPxzgbks_yY=/status" \
-H "Authorization: Bearer <ACCESS_TOKEN>"