如何处理 Amazon CloudFront 中有空格的文件?

How to handle files having spaces in Amazon CloudFront?

在我的 AWS S3 存储桶中有很多文件,文件名之间有 spaces。这里有 3 个文件 URL,它们是可访问的。

  1. s3-us-west-amazonaws.com/debesh.com/images/natural+风景+with+山+and+cloud.jpg

  2. s3-us-west-2.amazonaws.com/debesh.com/images/natural+风景+树叶+with+red+and+green+color.jpg

  3. s3-us-west-2.amazonaws.com/debesh.com/images/natural+风景+蚂蚁+in+the+middle+of+the+road+. jpg

但最近当我实现了 CloudFront CDN 分发时,源服务器是上面的 AWS S3 存储桶。

我的 CloudFront 域名:d37uawng2qmzgo.cloudfront.net

现在,当我尝试使用我的 CloudFront 域名访问这些图像时。我收到一个错误页面。

这里是 URL 替换为 CloudFront 域名:

  1. d37uawng2qmzgo.cloudfront.net/images/natural+风景+with+山+and+cloud.jpg

  2. d37uawng2qmzgo.cloudfront.net/images/natural+风景+树叶+with+red+and+green+color.jpg

  3. d37uawng2qmzgo.cloudfront.net/images/natural+风景+蚂蚁+in+the+middle+of+the+road+.jpg

我发现问题出在文件名之间的 space 上。

CloudFront CDN 无法识别文件名之间的 + 符号(即 space)。

当我将“+”转换为“%20”时,它可以正确显示图像。

  1. d37uawng2qmzgo.cloudfront.net/images/natural%20风景%20with%20山%20and%20cloud.jpg

  2. d37uawng2qmzgo.cloudfront.net/images/natural%20scenery%20leaves%20with%20red%20and%20green%20color.jpg

  3. d37uawng2qmzgo.cloudfront.net/images/natural%20风景%20ant%20in%20the%20middle%20of%20the%20road%20.jpg

但问题是我的 AWS S3 存储桶中有很多文件,如上述 3 个文件,我无法将 + 号更改为 %20 号。

那么谁能建议我处理这些文件名之间的这些space的方法?

或者 AWS CloudFront 是否提供任何工具来处理此类文件命名问题?

我注意到 CloudFront 现在确实在 URL 中处理 +。所以如果你仍然有实时分发,这个 URL 应该有效:

https://d37uawng2qmzgo.cloudfront.net/images/natural+scenery+with+mountain+and+cloud.jpg

但是,如果原始文件名中有 +,则需要将它们转换为 CloudFront URL 的 %2B