Estoy desarrollando una aplicación Ruby on Rails que requiere la carga/descarga de archivos. Para la parte de carga utilicé el gem carrierwave ya que es muy fácil de usar y flexible. El problema es: una vez que cargué el archivo, necesito saber algunas cosas: es decir, si se trata de un archivo PDF en lugar de descargar el archivo, lo muestro en línea, y lo mismo ocurre con una imagen. ¿Cómo obtengo la extensión de archivo y cómo puedo hacerlo a enviar el archivo a un usuario? Cualquier comentario es apreciado ¡Gracias!Carrierwave cómo obtener la extensión de archivo
Respuesta
Determinar la extensión de archivo (supongo que un nombre por cargador montado es 'archivo'):
file = my_model.file.url
extension = my_model.file.file.extension.downcase
luego preparar la mímica y la disposición de Vars:
disposition = 'attachment'
mime = MIME::Types.type_for(file).first.content_type
if %w{jpg png jpg gif bmp}.include?(extension) or extension == "pdf"
disposition = 'inline'
end
(agregar otras extensiones si lo desea) .
Y a continuación, enviar el archivo:
send_file file, :type => mime, :disposition => disposition
Una vez que ha cargado un archivo, el nombre se almacena en la base de datos. Esto también incluye la extensión. Asumiendo que tiene un modelo User
con un cargador montado como asset
, entonces se puede obtener como:
user.asset.file.extension
En cuanto a enviarlo al usuario, si se llama a user.asset_url
, se le dará la dirección URL donde está el archivo cargado El usuario puede usar ese enlace para obtener el archivo. ¿O estoy entendiendo mal lo que quiere decir con "enviar el archivo a un usuario"?
gracias por responder !! bueno, quiero que el usuario descargue el archivo. Ya sabes, no descargues el cuadro de diálogo (abrir con ... o mantenerlo o en caso de mantener o rechazar chrome). Pensé que con un simple archivo de envío con parámetros estaría bien. – Wiggin
Bueno, solo enlace al archivo a continuación. Puede obtener la url con 'user.asset_url'. –
¡Sí, lo hice! Tu consejo funcionó perfectamente, ¡muchas gracias! – Wiggin
- 1. ¿Cómo validar una extensión de archivo solo si hay una extensión de archivo? Re: carrierwave
- 2. Tipo de archivo - Obtener la extensión original
- 3. obtener extensión de archivo (editar)
- 4. Node.js obtener extensión de archivo
- 5. Cómo obtener el archivo real desde S3 usando CarrierWave
- 6. Obtener ImageFormat desde la extensión de archivo
- 7. Obtener la extensión del archivo (nombre base?)
- 8. ¿Cómo obtener la extensión de archivo de OpenFileDialog?
- 9. ¿Cómo obtener la extensión de archivo de una url?
- 10. ¿Cómo obtener la extensión de archivo del tipo de contenido?
- 11. Obtener extensión del archivo sin proporcionar extensión en la ruta
- 12. ¿Cómo obtener la extensión de archivo en PHP?
- 13. Carrierwave archivo múltiple (foto) subir
- 14. Carrierwave Archivo temporal sin modelo
- 15. ¿Cómo asignar un archivo remoto a Carrierwave?
- 16. Obtener nombre de archivo antes de la extensión
- 17. Obtener icono grande desde la extensión de archivo
- 18. ¿Cómo obtener la extensión de archivo del archivo como resultado de la consulta SQL?
- 19. Dimensión de la imagen Carrierwave
- 20. Carrierwave - "cargando" un archivo de una cadena
- 21. Obtener la extensión de un archivo contenido en un NSString
- 22. Obtener nombre del archivo sin la extensión en Python
- 23. Cómo obtener la extensión de archivo al cambiar el nombre del archivo con cffile
- 24. Cómo obtener un nombre de archivo sin extensión desde la ruta del archivo en Ruby
- 25. Problemas con Carrierwave: convertir
- 26. ¿Cómo obtener el ícono y la descripción de la extensión de archivo usando Delphi?
- 27. Cómo obtener la extensión de imagen usando file_get_contents php?
- 28. Obtener nombre de archivo y extensión desde una ruta absoluta
- 29. Obtener el nombre de archivo y la extensión desde el archivo de ruta programáticamente cacao?
- 30. CarrierWave URL de la imagen
Muchas gracias, me gusta el estilo de su solución, y funcionó perfectamente. ¡¡De nuevo, gracias por responder!! – Wiggin
donde exactamente en los archivos del proyecto de rieles coloca la disposicion y vars de tipo MIME? – maumercado