ActiveStorage raw file uploads fail with "An unknown file format not allowed" due filename being lost
还没有人认领这个 Issue。
评估
调研方向
从 lib/active_storage/service/cloudinary_service.rb 中的 upload 方法开始,检查 ActiveStorage 文件名如何传递到 Cloudinary::Uploader.upload_large。复现 issue 中描述的已配置 CSV 上传,按描述保留原始文件名,并验证 ActiveStorage 上传能够完成且不会出现未知文件格式错误。
由索引模型根据 Issue 内容生成。
描述
Bug report for Cloudinary Ruby SDK
Before proceeding, please update to latest version and test if the issue persists
Describe the bug in a sentence or two.
When uploading raw files (e.g. CSV) through the ActiveStorage integration, the Cloudinary API rejects the upload with CloudinaryException: An unknown file format not allowed.
This is a regression from the 1.x series, which used rest-client and preserved the original filename in multipart requests.
Issue Type (Can be multiple)
- Build - Cannot install or import the SDK
- Performance - Performance issues
- Behaviour - Functions are not working as expected (such as generate URL)
- Documentation - Inconsistency between the docs and behaviour
- Other (Specify)
Steps to reproduce
- Configure ActiveStorage with the Cloudinary service (config/storage.yml):
cloudinary:
service: Cloudinary
type: private
- Configure a Cloudinary upload preset as the default for "API raw" with allowed_formats: ["csv"]
- Create a model with has_one_attached :csv_file
- Upload a .csv file through ActiveStorage
- Observe the error:
ActiveStorage::IntegrityError (An unknown file format not allowed)
Caused by: CloudinaryException (An unknown file format not allowed)
Error screenshots or Stack Trace (if applicable)
…
Operating System
- Linux
- Windows
- macOS
- All
Environment and Libraries (fill in the version numbers)
- Cloudinary Ruby SDK version - 2.1.2
- Ruby Version - 3.4.1
- Rails Version - 8.1.2
- Other Libraries (Carrierwave, ActiveStorage, etc) - 0.0.0
Repository
If possible, please provide a link to a reproducible repository that showcases the problem
Suggested Fix
In lib/active_storage/service/cloudinary_service.rb, the upload method should pass the filename to the uploader as original_filename:
def upload(key, io, filename: nil, checksum: nil, **options)
instrument :upload, key: key, checksum: checksum do
begin
extra_headers = checksum.nil? ? {} : {Headers::CONTENT_MD5 => checksum}
options = @options.merge(options)
options[:original_filename] = filename.to_s if filename.present? # <-- add this
resource_type = resource_type(io, key)
options[:format] = ext_for_file(key) if resource_type == "raw"
Cloudinary::Uploader.upload_large(
io,
# ... rest unchanged
)
end
end
end
- 主要语言
- Ruby
- 星标
- 420
- 派生
- 282
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
cloudinary/cloudinary_gem 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 55/100
cloudinary/cloudinary_gem#597 · 1 条评论 ·
-
难度 3/5 1-2 天 新手友好度 45/100
cloudinary/cloudinary_gem#582 · 1 条评论 ·
-
404's when fetching .eml files (from Action Mailbox)可能重新可做 @rnamba-cloudinary 于 400 天前认领,目前没有进行中的 PR。 未关闭
难度 4/5 3-5 天 新手友好度 30/100
cloudinary/cloudinary_gem#581 · 1 条评论 ·
-
BlobKey, MirrorService and Sidekiq 8 are incompatible可能重新可做 @const-cloudinary 于 541 天前认领,目前没有进行中的 PR。 未关闭
cloudinary/cloudinary_gem#573 · 3 条评论 · 已指派 1 人 ·
-
难度 4/5 3-5 天 新手友好度 30/100
cloudinary/cloudinary_gem#562 · 9 条评论 ·
查看 cloudinary/cloudinary_gem 的全部 Issue
相似的 Issue
-
area: ci benchmark build developer-experience difficulty: easy dx enhancement github-actions good first issue hacktoberfest help wanted performance quality rank: 8 kyu ruby tech: ruby
难度 1/5 1 小时以内 新手友好度 82/100
flisk-sh/flisk-labs#22 ·
-
1.severity: security
难度 2/5 1-3 小时 新手友好度 62/100
维护者通常 1 天内回复
-
15-minutes 5-minutes algorithm any-language beginner-friendly c cpp csharp easy go good first issue hacktoberfest help wanted java javascript kotlin python rust swift typescript
难度 1/5 1 小时以内 新手友好度 68/100
Huerte/algo-solutions-python#260 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
internal
难度 2/5 1-3 小时 新手友好度 72/100
Kong/developer.konghq.com#8080 ·
维护者通常 1 天内回复