#node.js #file-upload
#node.js #загрузка файла
Вопрос:
На данный момент я использую запрос модуля npm для загрузки файла с типом содержимого application / octet-stream. Проблема в том, что я не могу получить тело ответа обратно. Это происходит из-за известной ошибки:https://github.com/request/request/issues/3108
Можете ли вы предоставить мне альтернативные способы загрузки файла в API с типом содержимого application / octet-stream?
Ответ №1:
Вы пробовали загружать файл в буфер, а не в поток? Я понимаю, что во многих контекстах поток предпочтительнее, но часто приемлема просто загрузка в память. Я использовал этот подход без проблем:
const imageBuffer = fs.readFileSync(fileName); // Set filename here..
const options = {
uri: url, /* Set url here. */
body: imageBuffer,
headers: {
'Content-Type': 'application/octet-stream'
}
};
request.post(options, (error, response, body) => {
if (error) {
console.log('Error: ', error);
return;
}
Чтобы сделать то же самое, используя поток:
const options = {
uri: url, /* Set url here. */
body: fs.createReadStream(fileName),
headers: {
'Content-Type': 'application/octet-stream'
}
};
request.post(options, (error, response, body) => {
if (error) {
console.log('Error: ', error);
return;
}
..
Комментарии:
1. Спасибо, это решение работает! В любом случае, я думаю, что лучше делать это с потоками, потому что видео будут загружаться с помощью этой программы, и размер может быть действительно большим.
2. Если вы имеете дело с большими файлами, вы должны использовать streams в порядке!
3. Можете ли вы привести пример, как сделать то же самое с потоком?
4. @Keven, я обновил пример с использованием потока.