J'utilise les balises suivantes dans mon html.erb à la fois écran et télécharger un fichier jpg qui est pas dans le dossier public/images:S'il vous plaît aidez-moi à envoyer un fichier jpg en utilisant send_data
<%= image_tag retrieve_photo_path(@photo) %>
<%= link_to "Download Photo", download_photo_path(@photo) %>
ma le code du contrôleur ressemble à:
def retrieve
@photo = Photo.find(params[:id])
send_data File.read(@photo.abs_filepath), :type = "image/jpeg", :disposition => "inline"
end
def download
@photo = Photo.find(params[:id])
send_file @photo.abs_filepath, :type = "image/jpeg", :filename => @photo.filename
end
Le lien de téléchargement fonctionne parfaitement, mais le tag d'image affiche un x rouge (image brisée). Qu'est-ce que je rate? J'utilise InstantRails sur WinXP, mis à jour vers Rails 2.3.4 et Ruby 1.8.6.
Vérifiez vos journaux de serveur ou de sortie pour la demande à l'action "retreive". Vous y trouverez probablement des messages d'erreur qui pourraient vous aider à comprendre. – nicholaides
Si je tape l'URL "www.mytestapp.com/photos/3/retrieve" directement dans mon navigateur (IE) pour simuler la demande img, je reçois l'image rouge x cassé - et mon apache access.log a ce qui suit entrée: "GET/photos/3/retrieve HTTP/1.1" 304 0 Quelqu'un peut-il aider avec ce que ce code d'état 304 signifie? – user206481
Il semble que cela ait quelque chose à voir avec la mise en cache d'Apache, mais je ne suis pas du tout familier avec cela - s'il vous plaît, aidez! – user206481