ActiveStorage raw file uploads fail with "An unknown file format not allowed" due filename being lost
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 52/100
Hướng nghiên cứu
Bắt đầu trong lib/active_storage/service/cloudinary_service.rb tại phương thức upload và kiểm tra cách tên tệp của ActiveStorage được truyền đến Cloudinary::Uploader.upload_large. Tái hiện thao tác tải lên CSV đã được cấu hình như mô tả trong issue, giữ nguyên tên tệp ban đầu như đã mô tả và xác minh rằng thao tác tải lên của ActiveStorage hoàn tất mà không gặp lỗi định dạng tệp không xác định.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- Ngôn ngữ chính
- Ruby
- Star
- 420
- Fork
- 282
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của cloudinary/cloudinary_gem
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
cloudinary/cloudinary_gem#597 · 1 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
cloudinary/cloudinary_gem#582 · 1 bình luận ·
-
404's when fetching .eml files (from Action Mailbox)Có thể làm lại được @rnamba-cloudinary đã nhận 400 ngày trước và không có pull request nào đang mở. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
cloudinary/cloudinary_gem#581 · 1 bình luận ·
-
BlobKey, MirrorService and Sidekiq 8 are incompatibleCó thể làm lại được @const-cloudinary đã nhận 541 ngày trước và không có pull request nào đang mở. Đang mở
cloudinary/cloudinary_gem#573 · 3 bình luận · 1 người được giao ·
-
ActiveStorage Mirror IssueĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
cloudinary/cloudinary_gem#562 · 9 bình luận ·
Tất cả issue của cloudinary/cloudinary_gem
Issue tương tự
-
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
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
flisk-sh/flisk-labs#22 ·
-
1.severity: security
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
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
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 68/100
Huerte/algo-solutions-python#260 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
internal
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Kong/developer.konghq.com#8080 ·
Maintainer thường phản hồi trong vòng 1 ngày