2011-01-24 22 views
5

estoy usando el siguiente cargador de archivos con Rails 3: https://github.com/blueimp/jQuery-File-Uploadrieles acceder a un archivo subido y guardarlo en el Paperclip

El cargador en el lado del cliente está funcionando bien. Puedo ver en los rieles del archivo que está siendo publicado siguiente cuando subo un archivo de registro:

Started POST "/attachments/upload" for 127.0.0.1 at Mon Jan 24 14:15:25 -0800 2011 
    Processing by AttachmentsController#upload as */* 
    Parameters: {"_http_accept"=>"application/javascript", "authenticity_token"=>"F1h9pvCZL9HUgTjwCIAMc%252BW1cYwx7eBOPwThHfbS5ZU%253D", "file"=>#<ActionDispatch::Http::UploadedFile:0x1076a6d48 @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"joecocker.jpg\"\r\nContent-Type: image/jpeg\r\n", @original_filename="joecocker.jpg", @tempfile=#<File:/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU+++TI/-Tmp-/RackMultipart20110124-12264-rbtnth-0>>} 

El problema que estoy teniendo es que soy incapaz de guardar el archivo subido al clip.

he Ried:

@attachment = Attachment.create(:attachment => File.open(params[:file].tempfile.path)) 
@attachment = Attachment.create(:attachment => params[:file].tempfile.path) 

Y ni trabajan. Paperclip inserta un nombre de archivo adjunto de "RackMultipart20110124-12264-rbtnth-0"

¿Alguna idea/sugerencia sobre cómo guardar el archivo en clip? gracias

Respuesta

10

Simplemente use params[:file] para acceder al archivo. No es necesario hacer params[:file].tempfile.path. Paperclip toma un objeto similar completo File.

0

Es difícil decir sin ver su código de modelo, pero en base a lo que veo me gustaría probar:

@attachment = Attachment.create(params[:file]) 
1

Podría ser el caso de que tenga problemas de permisos. Paperclip por defecto crea una carpeta con el sistema de nombre en la carpeta pública y allí guarda todos los archivos adjuntos. Verifique el permiso en el directorio de su proyecto. Para fines de prueba, configúrelo en 777

En segundo lugar, no es necesario guardar los datos adjuntos manualmente. Una vez que haya usado paperclip, guardará automáticamente el archivo adjunto. Para que todo funcione, debes asegurarte de seguir estos pasos.

  1. Se han añadido esta línea a su modelo, has_attached_file: avatar
  2. Se ha creado la migración clip y ha ejecutar la migración Puede generar la migración con la siguiente carriles de comando g clip "Modelo" avatar (donde avatar se utiliza para procesar los archivos adjuntos)
  3. en su página de vista en la que está cargando el uso de archivos sólo tiene que utilizar f.file_field:. avatar
  4. en su programa de archivo/índice de utilización image_tag: avatar.url (: pequeño), estoy asumiendo el archivo adjunto de la imagen y has aplicado estilo a tu imagen como un pequeño pulgar, etc.

Después de asegurar el paso anterior solo ejecuta su programa, funcionará.

Cuestiones relacionadas