Как скачать файл (с URL) в Typescript - PullRequest
0 голосов
/ 06 октября 2019

Обновление: этот вопрос раньше задавался о Google Cloud Storage, но с тех пор я понял, что проблема на самом деле является воспроизводимой, просто пытаясь сохранить загрузку на локальный диск. Таким образом, я перефразирую вопрос, чтобы целиком относиться к загрузке файлов в Typescript и больше не упоминать Google Cloud Storage.


При попытке загрузить и сохранить файл в Typescript с помощью WebRequests (хотя у меня возникла та же проблема с requests и request-promises), кажется, что весь код выполняется правильно, но результирующий файл поврежден и не может быть просмотрен. Например, если я загружаю изображение, файл не отображается ни в одном приложении.

// Seems to work correctly
const download = await WebRequest.get(imageUrl);
// `Buffer.from()` also takes an `encoding` parameter, but it's unclear how to determine the encoding of a download
const imageBuffer = Buffer.from(download.content);
// I *think* this line is straightforward
const imageByteArray = new Uint8Array(imageBuffer);
// Saves a corrupted file
const file = fs.writeFileSync("/path/to/file.png", imageByteArray);

Я подозреваю, что проблема заключается в вызове Buffer.from, который неправильно интерпретирует загруженный контент, но я неуверен, как сделать это правильно. Любая помощь будет принята с благодарностью.

Большое спасибо!

1 Ответ

0 голосов
/ 07 октября 2019

Из того, что я видел в примерах для веб-запроса, download.content - это просто строка. Если вы хотите выгрузить строку в облачное хранилище с помощью узла SDK, вы можете использовать File.save , передавая эту строку напрямую.

В качестве альтернативы, вы можете использовать одно из рассмотренных решений здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...