S3在文件名中使用逗号下载图像会导致" net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION"

时间:2016-07-12 05:56:08

标签: javascript node.js amazon-web-services amazon-s3

我存储了用户在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);
    });
};