gpt4 book ai didi

javascript - 来自 Amazon S3 的 res.download 文件

转载 作者:行者123 更新时间:2023-12-02 21:47:55 26 4
gpt4 key购买 nike

我试图从根目录之外下载文件,但是每次我尝试时,它都会尝试从根目录中获取文件。我需要我的网站的用户能够下载这些文件。

该文件最初已上传到 Amazon S3,我已使用 getObject 函数访问它。

这是我的代码:

app.get('/test_script_api', function(req, res){
var fileName = req.query.File;
s3.getObject(
{ Bucket: "bucket-name", Key: fileName },
function(error, s3data){
if(error != null){
console.log("Failed to retrieve an object: " + error);
}else{
//I have tried passing the S3 data but it asks for a string
res.download(s3data.Body);

//So I have tried just passing the file name & an absolute path
res.download(fileName);
}
}
);
});

这会返回以下错误:错误:ENOENT:没有此类文件或目录,stat '/home/ec2-user/environment/test2.txt'

当我输入绝对路径时,它只会将其附加到/home/ec2-user/environment/的末尾

如何更改 res.download 尝试下载的目录?

是否有更简单的方法从 Amazon S3 下载文件?

如有任何帮助,我们将不胜感激!

最佳答案

我遇到了同样的问题,我找到了答案: NodeJS How do I Download a file to disk from an aws s3 bucket?

基于此,您需要使用createReadStream()和pipe()。R 这里更多关于stream.pipe() - https://nodejs.org/en/knowledge/advanced/streams/how-to-use-stream-pipe/

res.attachment() 将为您设置标题。 -> https://expressjs.com/en/api.html#res.attachment .

此代码应该适合您(基于上面链接中的答案):

app.get('/test_script_api', function (req, res) {
var fileName = req.query.File;
res.attachment(fileName);
var file = s3.getObject({
Bucket: "bucket-name",
Key: fileName
}).createReadStream()
.on("error", error => {
});
file.pipe(res);
});

就我而言,在客户端,我使用了 <a href="URL to my route" download="file name"></a>这确保了文件正在下载。

关于javascript - 来自 Amazon S3 的 res.download 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60207247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com