Я работаю над сервисом загрузки и выгрузки файлов с реагированием и узлом. Я размещаю файлы на Digital Ocean, который использует AWS S3. Следующий код работает как чемпион (прямо из их документации).
`// код OG
app.get ("/ test-download /: id", (req, res) => {
var params = {
Bucket: secretBucketName,
Ключ: secretKeyStuff
};
s3.getObject(params, function(err, data) {
//
console.log(data);
//
if (!err) {
res.send({ data, key: params.Key });
} else {
// an error occurred
console.log({ err });
}
});
});`
Тем не менее, каждый раз, когда я пытаюсь загрузить ранее загруженный файл размером более 100 МБ, либо происходит сбой сервера, я получаю кучу JavaScript-памяти или какую-то другую ошибку.
Итак, я попытался выполнить потоковую передачу запроса getObject и могу выполнить его успешно. Тем не менее, я получаю странный ответ на внешний интерфейс, и я не уверен, нужно ли мне преобразовывать данные перед потоковой передачей или преобразовывать их потом ...
app.get("/test-download/:id", (req, res) => {
var params = {
Bucket: secretBucketName,
Key: secretKeyStuff
};
// This Streams
s3.getObject(params)
.createReadStream()
.pipe(res)
.on("finish", () => {
console.log("** done");
});
});
Код переднего конца ..
downloadFile = (id, name, type) => {
axios
.get(
`/test-download/${id}`,
this.props.handleSnackBar("Your download has been started.")
)
.then(res => {
download(
// Stream doesn't recognize res.data.data.Body.data
// I'm assuming b/c of the data format in which is being returned
new Blob([new Uint8Array(res.data.data)], { type: "octet/stream" }),
`${name}.${type}`
);
console.log(res.data);
})
.catch(err => console.log(err));
};
Ответ внешнего интерфейса с потоком узлов.
Ответ внешнего интерфейса с потоком узлов
Есть идеи, что передает этот образ? И если бы ты мог указать мне правильное направление, ты был бы величайшим. enter code here