# generaltranslation: General Translation Core SDK: downloadFileBatch
URL: https://generaltranslation.com/ru/docs/core/class/methods/translation/download-file-batch.mdx
---
title: downloadFileBatch
description: Справка по API для метода downloadFileBatch, который позволяет скачать несколько файлов одним запросом
---
## Обзор
Метод `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;
}[];
```
| Имя | Тип | Описание |
| ---------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `fileId` | `string` | Уникальный идентификатор скачиваемого файла |
| `branchId?` | `string` | Идентификатор ветки, из которой нужно скачать файл. Если не указан, используется ветка по умолчанию |
| `locale?` | `string` | Целевая локаль перевода. Если не указана, будет скачан исходный файл |
| `versionId?` | `string` | Идентификатор скачиваемой версии. Если не указан, используется последняя версия |
| `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` | Идентификатор файла |
| `branchId` | `string` | Идентификатор ветки |
| `locale` | `string` | Локаль файла (если это перевод) |
| `versionId` | `string` | Идентификатор версии |
| `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), чтобы запустить задания перевода