Cargue archivos directamente a S3 usando Paperclip y Dropzone.js

Generalmente son las pequeñas tareas que consumen mucho tiempo las que más nos frustran. Como cargar un archivo a S3; El requisito es bastante simple, pero el método elegido para cargar el archivo decidirá la eficiencia de la tarea. Como cargar archivos es una característica que requieren la mayoría de las aplicaciones, RailsCarma ha compilado un breve tutorial sobre uno de los mejores métodos para realizar esta tarea de manera eficiente: usar Paperclip y Dropzone.js.

  • Clip de papel es una opción popular para cargar imágenes y archivos, ya que ofrece excelentes funciones para manejar los archivos adjuntos; La gema 'clip' es la opción preferida. Paperclip le permite cargar varias imágenes y archivos, generar miniaturas e incluso cambiar el tamaño de las imágenes automáticamente. Se jacta de contar con una comunidad grande y activa, lo que la convierte en la mejor opción para la mayoría de los desarrolladores.
  • Dropzone.js es una biblioteca de código abierto con funciones de arrastrar y soltar archivos (con vista previa de imágenes).
  • amazon s3 es un dispositivo de almacenamiento simple para el almacenamiento de datos. Podemos usarlo para recuperar imágenes y todo tipo de archivos.

¿Por qué clip?

Paperclip es una herramienta popular para cargar archivos por las siguientes razones:

  • Admite almacenamiento en caché de archivos:
    Si un formulario no se valida, no queremos que el usuario vuelva a seleccionar su archivo y lo vuelva a cargar. Por lo tanto, el almacenamiento en caché de archivos es necesario desde el punto de vista de UX. Y también conserva el ancho de banda.
  • Imágenes de Procesos
    Paperclip puede cambiar el tamaño y recortar imágenes en varios formatos diferentes, lo que permite al desarrollador elegir la biblioteca.
  • ¡Simplifica la tarea!
    ¡La gema Paperclip no contamina su código y es fácil de probar!
  • Permite el procesamiento de archivos
    Paperclip permite el procesamiento de archivos para la extracción de datos EXIF y la creación de miniaturas de archivos PDF, PSD, DOC y XLSX cargados.
  • Proporciona CDN y soporte de servicio de almacenamiento 
    Esta es una gran ventaja ya que queremos mantener el ancho de banda de nuestros servidores lo más bajo posible y evitar una posible pérdida de datos debido a una falla del servidor.
  • Ofrece procesamiento sobre la marcha
    Paperclip procesa imágenes y archivos por solicitud. Esta es una característica innovadora que permite a los desarrolladores crear contenido personalizado que se adapte mejor a diferentes situaciones.

¿Qué son los eventos asincrónicos de Dropzone?

  • archivo agregado:  Cuando se agrega un archivo a la lista.
  • archivo eliminado: Se utiliza siempre que se elimina un archivo de la lista. Puede escuchar esto y eliminar el archivo de su servidor si lo desea.
  • miniatura: Cuando se ha generado la miniatura. Recibe la URL de datos como segundo parámetro.
  • error: Se produjo un error recibe el mensaje de error como segundo parámetro. Y si el error se debió a xmlhttprequest, se recibe el objeto xhr como tercer parámetro.
  • Procesando: Cuando se procesa un archivo (dado que hay una cola, no todos los archivos se procesan inmediatamente). Este evento se llamaba anteriormente archivo de procesamiento.
  • gota: El usuario dejó caer algo en la zona de caída.

¿Cómo podemos configurar Paperclip en nuestra aplicación?

  • has_attached _file: activo
  • :almacenamiento => :s3
  • :S3_host_name => ENV[“S3_HOST_NAME”]
  • :S3_región => ENV[“S3_REGION”]
  • :S3_protocol => ENV[“S3_PROTOCOL”]
  • :path => “:account_id/:class/:source_id/:attachment/:file_name”,:s3_headers => {'ContentDisposition' => 'adjunto', 'content-type' =>'application/octet_stream'},
    : depósito => ENV[“S3_BUCKET”],
    :s3_credentials => Proc.new{|a| una.instancia.s3_credentials}
  • Do_not_validate_attachment_file_type: activo
  • def s3_credenciales
    {:access_key_id => ENV[“S3_ACCESS_KEY_ID”], :secret_access_key => ENV[“S3_SECRET_ACCESS_KEY”]}

fin

¿Cómo podemos manejar rutas personalizadas en nuestra aplicación?

Paperclip.interpolates: archivo adjunto hacer | archivo adjunto, estilo | Extensión_imagen = [“jpg”, “jpeg”, “gif”, “png”, “PNG”, “GIF”, “JPEG”, “JPG”] extname = Archivo. extname(attachment.instance.asset_file_name).downcase.gsub(/\./, '') si img_extension.include? (nombre_ext) devuelve “imágenes”; de lo contrario, devuelve nombre_ext fin fin Paperclip.interpolates :nombre_archivo hacer |archivo adjunto, estilo|nombre_archivo = archivo adjunto.instancia.nombre_archivo_activo Fin

Los datos del depósito S3 se pueden recuperar cuando sea necesario. Pero tiene una limitación: manejar rutas personalizadas para diferentes estructuras de directorios puede resultar bastante engorroso. El clip puede resultar útil en tales situaciones. Es una gran herramienta para cargar y almacenar imágenes en un depósito S3 utilizando AWS.

En Railscarma, desarrollamos y brindamos servicios de aplicaciones web de vanguardia utilizando los marcos de Ruby para nuestros clientes en todo el mundo.
¿Quiere soluciones innovadoras para cualquier otro problema relacionado con el desarrollo ferroviario? Ponte en contacto con nosotros ahora!

Suscríbete para recibir las últimas actualizaciones

Artículos Relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESSpanish