Pregunta

La situación

Tengo un modelo simple con una imagen adjunta usando el clip, que tiene un par de procesado estilos para él (miniatura, completo, función).En este punto funciona como debería, y hace una estructura de directorios para cada objeto en /public/assets/foo/, que contiene subdirectorios original, en miniatura, de lleno, y característica.

El problema

No quiero que el original (de alta resolución) de las imágenes a ser expuestos por los usuarios a obtener.Así que tengo la esperanza de que hay una manera de especificar una ruta de acceso diferente para almacenar los originales en algún lugar fuera de /public/.Idealmente clip debe ser capaz de procesar los estilos de usar que la imagen original como la fuente, como lo hace actualmente.

También estoy abierto a sugerencias alternativas para la fabricación de los originales inaccesible para los usuarios externos.Cualquiera que sea la solución más práctica aquí.Gracias.

¿Fue útil?

Solución

Yo recomiendo usar una interpolación personalizada que coloque los archivos originales fuera del directorio público. Algo como esto:


Paperclip.interpolates :maybe_public do |attachment, style|
  style == :original ? "private" : "public"
end

has_attached_file :image, :path => ":rails_root/:maybe_public/:attachment..."

Esto ahorrará su: los archivos originales en un directorio no accesibles al público para la protección, pero todavía permiten el acceso Paperclip. Y mantendrá sus miniaturas en el directorio público de acceso estándar.

Otros consejos

Si es aceptable, vaya directamente ahorro de los originales, estableciendo el estilo por defecto.

  has_attached_file :image,
                    :styles => { :normal => "800x600>" },
                    :default_style => :normal

Si no es así, y desea conservar los originales, si está usando Apache, se puede usar un archivo .htaccess para restringir el acceso al directorio originales

<FilesMatch "^\.(jpe?g|gif|png)$">
   Order allow,deny
   Deny from all
</Files>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top