AWS s3 javascript sdk:文件密钥将空格编码为 %20 有什么方法可以使用端点参数来解决这个问题?

AWS s3 javascript sdk: file key encodes spaces as %20 any ways to fix this using the endpoint params?

我有一个表单,用户可以在其中上传任何名称的任何文件。稍后,我需要将此名称显示为下载link。我一直坚持文件名包含 'space' 等字符的情况。 AWS 将 space 替换为“%20”,这是糟糕的用户体验。

参见:https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html

我使用以下参数上传 s3.upload(uploadParams, function(err, data) {

  const uploadParams = {
    Bucket: req.params.bucketname,
    Key: req.headers.filepath,
    Body: ""
  };

并使用以下参数下载 s3.getObject(bucketParams, function(err, data) {

  const bucketParams = {
    Bucket: req.params.bucketname,
    Key: req.headers.filepath,
  };

我是 AWS 的新手,我不确定处理此问题的最佳方法。我试过使用 Content-Disposition 但它似乎没有做任何事情。

我的下一个选择是将文件名与 fileURL 一起存储在我的数据库中,这样当我获得 fileBody 时,我将使用我之前存储的文件名显示它。

使用内置 javascript 函数 decodeURIComponent(string)。它将所有%xx编码转换为utf-8中对应的字符。