我正在为S3存储桶中的文件生成预授权链接,但希望传递文件名以作为参数下载。
这是我的API的样子:
reports.get('/xxx', async (req, res) => {
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
var params = {
Bucket: config.xxx,
Key: 'xxx/xxx.json',
Expires: 60 * 5
}
try {
s3.getSignedUrl('getObject', params, function (err, url) {
if(err)throw err;
console.log(url)
res.json(url);
});
}catch (err) {
res.status(500).send(err.toString());
}
});
这是我从前端起的称呼方式:
getPreauthorizedLink(e){
fetch(config.api.urlFor('xxx'))
.then((response) => response.json())
.then((url) => {
console.log(url);
});
}
如何为API调用和相应的API方法添加参数以传递文件名?
答案 0 :(得分:2)
好像您在服务器端使用express
,因此您只需在请求URL
中添加参数,然后在服务器端获取它们即可。
在前端或在客户端,您将像这样呼叫Api
fetch('/xxx/FileName')
在后端,您将像这样修改路由
reports.get('/xxx/:fileName', ..){
var fileName = req.params.fileName
}
您也不想每次收到请求时都要求。因此,最好将var AWS = require('aws-sdk');
移到请求处理程序之外。