我存储了用户在AWS S3上上传的图像。当用户在浏览器中查看这些图像时,他们的网址指向我的应用,我使用s3.getSignedUrl将其重定向到临时签名的网址。 99%的时间里,一切都很好。
问题在于,用户偶尔会上传文件名中包含逗号的图像。当他们尝试在Chrome中查看该图片(并且只有Chrome)时,我收到此错误
net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION
我发现这是逗号,因为其他几个人遇到了similar问题,他们通过设置内容处置标题修复了这个问题。
使用s3和getSignedUrl,我认为可以通过在params参数中设置ReponseContentDisposition属性来完成。具体的解决方法是在内容处理中正确引用文件名,或者只是将文件名设置为其他不包含逗号的内容。
然而,该计划并不适合我。任何人对我可能出错的细节都有任何想法吗?我的服务器是Node.js.这是正在进行重定向的js(就像我说的通常效果很好)
function tempRedirect(req, res) {
var filename = req.params[0];
var params = {
Bucket: S3_BUCKET,
ResponseContentDisposition: 'inline; filename=' + filename.replace(/,/, '_'),
Key: checkTrailingSlash(getFileKeyDir(req)) + filename
};
var s3 = new aws.S3(s3Options);
s3.getSignedUrl('getObject', params, function(err, url) {
res.redirect(url);
});
};
答案 0 :(得分:0)