2014-10-16 46 views
5

Ho fatto upload di file sul disco Google, ma al momento del download ottenuto l'errore:Come scaricare file da google drive usando paperclip-googledrive?

ActionController::MissingFile: Cannot read file original_22_Wages372-817339(wages).pdf 

Penso che non ha ottenuto percorso di unità google.

modello Allegato:

has_attached_file :doc, 
    storage: :google_drive, 
    google_drive_credentials: "#{Rails.root}/config/google_drive.yml", 
    google_drive_options: { 
    public_folder_id: '0BwCp_aK6VhiaQmh5TG9Qbm0zcDQ', 
    path: proc { |style| "#{style}_#{id}_#{doc.original_filename}" } 
    } 

Controller:

attachment = Attachment.find(params[:id])  
send_file attachment.doc.path(:original), 
    filename: attachment.doc_file_name, 
    type: attachment.doc_content_type, 
    stream: 'true', 
    x_sendfile: true 

Grazie in anticipo

+0

aperto (attachment.doc.url (: original)) utilizzando questo potrebbe essere in grado di scaricare documenti ma alcuni di documenti che danno seguito a bug. perché? Errno :: ENOENT: Nessun file o directory di questo tipo @ rb_sysopen - Nessuna immagine da /home/kedar/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/open-uri.rb:36: in 'initialize ' – Dinesh

risposta

1

Dinesh, prova il codice seguente per risolvere il tuo problema.

attachment = Attachment.find(params[:id]) 
    data = attachment.doc.url(:original) 
    data = open(attachment.doc.url(:original)) 

    send_file data, filename: attachment.doc_file_name, 
     type: attachment.doc_content_type 
+0

Grazie Sachin. è molto utile. – Dinesh

3

Si dovrebbe leggere il file prima dall'applicazione. E poi renderlo disponibile per il download.

attachment = Attachment.find(params[:id]) 
data = open(attachment.doc.url).read 
send_file data, 
    :filename => attachment.doc_file_name, 
    type: attachment.doc_content_type, stream: 'true', 
    :x_sendfile => true 

Si può anche renderlo disponibile come:

redirect_to attachment.doc.url 

ma questo non è un modo giusto per farlo. Perché apri direttamente le tue risorse all'utente finale.

+0

Grazie per aver risposto. . Ma dati = open (attachment.doc.path (: original)) leggere Sopra linea ha dato seguente errore Errno :: ENOENT: No such file or directory - original_25_Muster_Roll372-817338 (Muster) .pdf da/home/kedar/.rvm/rubies/ruby-2.0.0-p0/lib/ruby ​​/ 2.0.0/open-uri.rb: 36: in 'initialize ' – Dinesh

+2

Basta provare a trovare il file da comsole. usando 'attachment.doc.url' l'errore dice che non esiste questo tipo di file. cioè file mancante. E id restituisce il file correttamente quindi usa 'data = open (attachment.doc.url) .read' invece –

+0

Risposta modificata anche –

Problemi correlati