Afficher une image hors application

Bonjour,

Je cherche à afficher des images qui sont hors de l’arborescence rails.

Concretement, je veux afficher des images qui sont dans le répertoire
/home/user/images
sans les copié dans l’arborescence rails public/images.

le code suivant ne fonctionne pas :

C’est normal, le champ src doit etre une url et donc relative a ton
site.
T’imagine si les gens pouvaient acceder aux fichiers d’un serveur, cela
serait un gros pb de securite (genre, choper ton /etc/passwd …etc).

Mais il y a une solution, creer une action dans ton
ApplicationController
(comme cela toutes tes classes controller en heriteront) qui va chercher
une
image et l’afficher.

def show_image

utilises la fonction send_data (google send_data) qui va prendre

params[:path] comme argument + specifie le header de ta reponse (image)
end

dans ta vue:

<% image_tag url_for(:action => ‘show_image’, :path =>
‘/home/images/image_1.jpg’) %>

a+

Did

2006/7/29, pierre FAUQUEMBERGUE [email protected]:

pierre FAUQUEMBERGUE wrote:

Bonjour,

Il me semble qu’il te faudrai les placer dans un répertoire accessible
depuis internet. Classiquement dans un sous dossier de
/home/<ton_login>/www

si tu les places dans un répertoire nommé images il te faudra donc faire:

<titre>

Hors sujet qui peut aider:

  • Je te conseil de remplacer ‘/images’ par ‘http://<ton_domaine>/images’

  • Pour du code à la norme XHTML il te faut fermer chaque tag même img,
    d’ou le ’ />’. Il te faut aussi les attributs alt et title pour
    l’accessibilité de ta page.

Bon dev!

Sébastien Grosjean - ZenCocoon

Bonsoir,

Une autre solution est de faire un alias http. C’est comme un alias
ou un raccourci sur ton os préféré sauf que cela marche pour le
serveur web. Si tu es sur ligthttpd par exemple, tu modifie ces deux
paramètres:

server.modules = ( "mod_re…,
“mod_alias”, … ) //activation du module qui gère les alias
alias.url = ( “/images/medias/” => “/home/user/images/medias/” , “/
images/medias2/” => “/home/wwwroot/images/medias/”, “/images/vr/” =>
“/Users/cyril/Projects/guide/images/vr/” ) // succession key/value
d’alias valables.

Si tu utilises apache, je te renvoie vers la doc, mais tu devrais
trouver des exemples dans httpd.conf.

Le petit avantage par rapport à la solution ‘action’, c’est que tu
passes directement par le serveur http: pas de surcharge inutile sur
le processeur.

Bye,
Cyril

Cyril G.
+33 6 63 16 45 41 | [email protected]

Le Jul 29, 2006 à 3:16 PM, pierre FAUQUEMBERGUE a écrit :

Cette méthode me plait, mais je n’arrive pas à la concrétisé, malgré
les multiples recherches sur internet.

J’ai trouvé une solution pour afficher mes images avec la méthode
“send_file”

def show_image
send_file ‘/path/to.jpeg’, :type => ‘image/jpeg’, :disposition =>
‘inline’
end

Le problème, c’est que je voudrais mettre l’image dans une balise div
dans ma vue, et je ne sais pas quel code appliquer.
Pour l’instant la méthode “send_file” ne prends pas en compte mon code
de la vue, et affiche l’image de but en blanc sur une page. => c’est
pas terrible.

Avez vous deja eu a faire à send_file ?

Merci d’avance