amazon-s3 - 从 Rails 后端直接上传的 AWS S3 会生成具有十六进制名称且没有文件扩展名的 S3 存储桶项目
问题描述
任何人都对 S3 有此问题,您从 rails 后端存储的文件未显示为您在附加方法中指定的文件名?例如:
book.epub.attach(io: File.open("<filepath>/tangrenjie.epub"), filename: "rangrenjie.epub", content_type: 'application/epub+zip')
这导致文件在 S3 上的名称为“qsqyksxtpq66uk6vvyn6mtam17cp”:
我在 S3 控制台上手动上传了一个,一切正常。它的名字没有改变,这让我认为这是从 Rails 到 S3 的问题。
我尝试添加到 S3 上的 CORS 选项卡;但我不确定我会放什么
- rails 发送凭据,文件确实到达 S3 和
- 我不认为 localhost 算作一个域
这不是问题,但我正在使用的依赖项需要一个公共 url——我在 S3 上手动上传的文件的 url 有效(当然),但我的 rails 应用程序中的所有内容最终都会获得一个巨大的密钥它的文件名没有任何文件扩展名(见截图),当我在我的应用程序中将它们用作 src url 时它们不起作用。
我一直在从我正在使用的依赖项的作者那里获得帮助,但他不知道,因为他有一段时间没有使用 S3。
这是我在 S3 中的当前 CORS 规则:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
我将 rails 6.0.3 用作带有 ActiveStorage 的 api 以及 AWS S3 服务,使用 aws-sdk-s3 gem,使用 root 用户凭证来存储与 rails 后端应用程序上的对象关联的文件。
解决方案
推荐阅读
- python - 如何从 2 个数值列和 1 个分类列在 seaborn 中制作散点图?
- typescript - 为什么私有属性是接口的一部分?
- sql - 我想知道我们在下面的转换中采用那些 256,.. 数字的具体原因
- python - 如何使用 selenium 和 Python 调用 send_keys()
- java - 如何将文件中的字节转换为java中的对象?
- scala - 我如何解决这些依赖警告
- algorithm - 加权储层采样初始化(A-Chao 实现)
- azure-devops - 无法在 Azure DevOps 中 @提及或分配工作项给其他用户
- c - 如何在 C 编程中用 0 填充我的二进制文件?
- excel - VBA Range.Find() 函数不适用于大浮点数