2011-09-07 13 views
10

Estoy usando Thoughtbot's Paperclip gem para manejar las cargas de archivos.¿Paperclip limpia automáticamente los nombres de archivo?

Estoy descubriendo que cuando cargo un archivo con espacios en el nombre del archivo, se almacena con los espacios reemplazados por guiones bajos.

Eso está bien.

También traté de cargar un archivo con caracteres especiales como ~ y así sucesivamente y todos fueron reemplazados con guiones bajos.

Genial. Exactamente lo que quiero

¿Pero por qué está sucediendo?

Todo lo que estoy haciendo en mi modelo es ...

has_attached_file(
    file_somefile, 
    :path => ":rails_root/public/system/other/path/elements/:basename.:extension" 
) 

es el comportamiento por defecto de este Paperclip?

+0

¿Qué sistema operativo? En OS X obtengo nombres de archivos con los espacios y tildes originales. –

+0

Estoy usando OS X, Paperclip 2.3.1.1 – Ethan

+0

Hmm. No establecí explícitamente el camino en la aplicación en la que probé esto, aparte de eso, tampoco estoy haciendo nada. No puedo verificar mi versión en este momento, pero no especifiqué la versión en el Gemfile, entonces probablemente 2.4.1ish. –

Respuesta

6

OK, después de buscar un poco más, encontré this blog post que dice, abajo en la parte inferior, que Paperclip realmente hace un procesamiento mínimo de nombres de archivos.

11

Para añadir un poco más de información, esto sucede en Paperclip::Attachment#cleanup_filename en el que/[& $ +, /?:; = @ <> [] {} \ | \\^~ #%] las restricted_characters defecto/son sustituidos con guiones bajos.

No está documentado, pero puede especificar la opción: restricted_characters en el clip para cambiar lo que se reemplaza, p.

class User < ActiveRecord::Base 
    attr_accessible :avatar 
    has_attached_file :avatar, :restricted_characters => /@/ # only replaces '@' 
end 
+0

Enlace de actualización a [Paperclip :: Attachment # cleanup_filename] (https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/attachment.rb#L605) – nnattawat

Cuestiones relacionadas