ActiveStorage raw file uploads fail with "An unknown file format not allowed" due filename being lost
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 52/100
Línea de trabajo
Comienza en lib/active_storage/service/cloudinary_service.rb, en el método upload, y revisa cómo llega el nombre de archivo de ActiveStorage a Cloudinary::Uploader.upload_large. Reproduce la carga CSV configurada descrita en el issue, conserva el nombre de archivo original tal como se describe y verifica que la carga de ActiveStorage se complete sin el error de formato de archivo desconocido.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Ruby
- Estrellas
- 420
- Forks
- 282
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de cloudinary/cloudinary_gem
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
cloudinary/cloudinary_gem#597 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
cloudinary/cloudinary_gem#582 · 1 comentario ·
-
404's when fetching .eml files (from Action Mailbox)Quizá libre de nuevo @rnamba-cloudinary la tomó hace 400 días y no hay ningún pull request abierto. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
cloudinary/cloudinary_gem#581 · 1 comentario ·
-
BlobKey, MirrorService and Sidekiq 8 are incompatibleQuizá libre de nuevo @const-cloudinary la tomó hace 541 días y no hay ningún pull request abierto. Abierto
cloudinary/cloudinary_gem#573 · 3 comentarios · 1 asignado ·
-
ActiveStorage Mirror IssueAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
cloudinary/cloudinary_gem#562 · 9 comentarios ·
Todos los issues de cloudinary/cloudinary_gem
Issues similares
-
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
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
flisk-sh/flisk-labs#22 ·
-
1.severity: security
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
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
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
Huerte/algo-solutions-python#260 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
internal
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Kong/developer.konghq.com#8080 ·
Los mantenedores suelen responder en 1 día