# generaltranslation: General Translation Core SDK: downloadFileBatch
URL: https://generaltranslation.com/zh/docs/core/class/methods/translation/download-file-batch.mdx
---
title: downloadFileBatch
description: 用于在单个请求中下载多个文件的 downloadFileBatch 方法 API 参考
---
## 概述
`downloadFileBatch` 方法可通过一次批量请求下载多个源文件或译文文件。
```typescript
const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key' });
const result = await gt.downloadFileBatch([
{ fileId: 'file-123', branchId: 'branch-456', locale: 'es' },
{ fileId: 'file-123', branchId: 'branch-456', locale: 'fr' },
{ fileId: 'file-123', branchId: 'branch-456', locale: 'de' }
]);
```
**批量下载效率:**
此方法已针对单次 API 调用下载多个文件进行了优化;与多次单独调用 `downloadFile` 相比,可减少网络开销并提升性能。
## 参考
### 参数
| 名称 | 类型 | 描述 |
| ---------- | -------------------------- | ---------- |
| `requests` | `DownloadFileBatchRequest` | 文件请求对象的数组 |
| `options?` | `DownloadFileBatchOptions` | 下载请求的可选配置项 |
#### DownloadFileBatchRequest
```typescript
type DownloadFileBatchRequest = {
fileId: string;
branchId?: string;
locale?: string;
versionId?: string;
useLatestAvailableVersion?: boolean;
}[];
```
| Name | Type | Description |
| ---------------------------- | --------- | -------------------------------------------------------------- |
| `fileId` | `string` | 要下载文件的唯一标识符 |
| `branchId?` | `string` | 要下载的分支 ID。如果未提供,则使用默认分支 |
| `locale?` | `string` | 翻译的目标区域设置。如果未提供,则下载源文件 |
| `versionId?` | `string` | 要下载的版本 ID。如果未提供,则使用最新版本 |
| `useLatestAvailableVersion?` | `boolean` | 如果为 `true` 且找不到指定的 `versionId`,则会回退到最新可用版本,而不是直接失败。默认为 `false` |
#### DownloadFileBatchOptions
| 名称 | 类型 | 说明 |
| ---------- | -------- | ------------ |
| `timeout?` | `number` | 请求超时时长 (毫秒) |
### 返回值
`Promise` - 包含下载的文件及其元数据。
```typescript
type DownloadFileBatchResult = {
files: File[];
count: number;
}
```
| 属性 | 类型 | 描述 |
| ------- | -------- | --------- |
| `files` | `File[]` | 已下载文件对象数组 |
| `count` | `number` | 成功下载的文件数量 |
#### 文件结构
```typescript
type File = {
fileId: string;
branchId?: string;
locale?: string;
versionId?: string;
fileName: string;
data: string;
}
```
| 属性 | 类型 | 描述 |
| ----------- | -------- | ------------------ |
| `fileId` | `string` | 文件 ID |
| `branchId` | `string` | 分支 ID |
| `locale` | `string` | 文件的区域设置 (如果是翻译文件) |
| `versionId` | `string` | 版本 ID |
| `fileName` | `string` | 原始文件名 |
| `data` | `string` | UTF-8 字符串形式的文件内容 |
***
## 示例
```typescript title="index.ts" copy
// (1) 创建 GT 实例
const targetLocales = ['es', 'fr', 'de'];
const gt = new GT({
projectId: 'your-project-id',
apiKey: 'your-api-key',
});
// (2) 上传文件
const fileUpload = {
content: fileContents,
fileName: filePath,
fileFormat: 'JSON',
locale: 'en',
};
const files = [ { source: fileUpload } ];
const { uploadedFiles } = await gt.uploadSourceFiles(
files,
{ sourceLocale: 'en' }
);
// (3) 将文件翻译任务加入队列
const enqueueResult = await gt.enqueueFiles(
uploadedFiles,
{
sourceLocale: 'en',
targetLocales: targetLocales,
}
);
// (4) 等待所有翻译完成
const { fileId, versionId, branchId } = uploadedFiles[0];
const result = await gt.awaitJobs(enqueueResult);
if (!result.complete) {
console.error('部分任务未能在规定时间内完成');
}
// (5) 批量下载所有翻译
const downloadResult = await gt.downloadFileBatch(
targetLocales.map((locale) => ({
fileId,
branchId,
locale
}))
);
downloadResult.files.forEach(file => {
console.log(`已下载 ${file.locale}: ${file.fileName}`);
});
```
***
## 注意事项
* 文件会以 UTF-8 字符串形式返回
* 请先使用 [`queryFileData`](/docs/core/class/methods/translation/query-file-data) 确认文件已可供下载
* 在可能的情况下,返回文件的顺序会与请求项的顺序一致
* 批量中的单个文件下载失败不会导致整个批量请求失败
## 后续步骤
* 单个文件下载请参阅 [`downloadFile`](/docs/core/class/methods/translation/download-file)
* 请参阅 [`queryFileData`](/docs/core/class/methods/translation/query-file-data) 确认文件是否已可供下载
* 启动翻译任务请参阅 [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files)