11
votes

En utilisant send_file dans des rails

J'envoie un fichier MS-Word en utilisant des rails. C'est-à-dire que lorsque je clique sur un lien, un fichier DOC du dossier TMP (dans le projet) est envoyé.

Le code que j'utilise est xxx

Ça fonctionne, mais Il envoie un fichier vide. Le contenu est manquant dans le fichier. Toute suggestion?


1 commentaires

+1. Assurez-vous d'envoyer un fichier vide.


4 Réponses :


14
votes

Il n'y a pas de send_file : option de diffusion en continu, c'est: flux . Vous passez des types de mauvais paramètres. : Buffer_Size doit être numéro, pas une chaîne. : Le flux devrait être booléen, pas une chaîne. xxx pré>

Vous n'avez besoin que de paramètres du nom de fichier (si vous souhaitez envoyer un fichier avec un autre nom que l'original). Les autres options que vous utilisez sont par défaut (sauf: type). P>

pouvez-vous essayer ceci? P>

@filename ="#{RAILS_ROOT}/tmp/test/test.doc"
send_file(@filename, :filename => "test.doc")


0 commentaires

0
votes

Essayez d'envoyer avec: Disposition => 'Inline'

send_file path, :type => 'application/msword', :disposition => 'inline'


0 commentaires

3
votes

commenter la ligne suivante dans config / environnements / production.rb xxx


1 commentaires

Pour nginx, il est X-Accel-redirect .



1
votes
In your view =>
<%= link_to "click here to download", signed_feeds_pdf_path(:feed_image_path => feed_image.feedimage.path), target: '_self' %>
In your controller =>
  def pdf
    file_name = params[:feed_image_path].split('/').last
    @filename ="#{Rails.root}/public/uploads/feed_image/feedimage/#{file_name}"
    send_file(@filename ,
      :type => 'application/pdf/docx/html/htm/doc',
      :disposition => 'attachment')           
  end

0 commentaires