Page 2 sur 3

Publié : 29 nov. 2004, 21:02
par PsyDk
Heu, je ne comprends pas ce site... Comment on fait pour reproduire le problème ? Un exemple étape par étape serait bienvenu.

Publié : 29 nov. 2004, 21:38
par calimo
Le problème c'est que là clairement tu veux le manipuler avant de l'avoir uploadé. Ça c'est un problème :?

Publié : 30 nov. 2004, 06:39
par Lépine
Vous avez mal lu mais l'upload a déja été fait avant l'appel de la procédure javascript ci dessus qui est chargée de l'affichage !

Méthode pour reproduire le problème :
1* Se rendre sur la page de démo : http://chrono.apinc.org/index.php?numero=25
2* Choisir une des démo et ouvrir le bureau (prive & prive)
3* Se rendre sur la partie "Edition" et choisir une page !
4* Cliquer sur "Image" dans le bandeau jaune pour insérer une image puis sur "parcourir" puis sur ok ! PROBLEME : l'image uploadée ne s'affiche pas sous FF alors qu'elle s'affiche très bien sous Mozilla et autres !!!!!

Publié : 30 nov. 2004, 10:26
par bobo
Lépine a écrit :Vous avez mal lu mais l'upload a déja été fait avant l'appel de la procédure javascript ci dessus qui est chargée de l'affichage !
Ben non, il n'y a pas d'upload.
Petit rappel, l'upload se fait à la soumission d'un formulaire, pas avant. Dans ton cas, il n'y a pas de soumission, donc pas d'upload, donc le document est bloqué par mesure de sécurité.
Autant que je sache, avec la Mozilla 1.8a5, ça ne marche pas mieux. Je ferais des essais avec Safari ce soir si tu veux (et si j'y pense).

Publié : 30 nov. 2004, 11:03
par Lépine JEAN
Avec toutes mes excuses mais vous n'auriez pas une petite tendance à prendre les gens pour des cons non ?

Je voulais juste faire un petit effort pour que chrono-site fonctionne avec FF aussi !

Publié : 30 nov. 2004, 11:19
par calimo
Quand tu cliques sur "OK" tu as quelle action ?
En fait le problème c'est ces frames qui empêchent d'accéder au code source, je suis dans l'incapacité de dire ce qui se passe quand je fais OK... il y a d'abord un document.forms.submit ou est-ce que tu commences par manipuler l'image ?

Publié : 30 nov. 2004, 12:01
par PsyDk
Merci pour la procédure de test.

Bah effectivement, c'est bien ce qu'on se tue à te dire depuis le début. En http:// il t'est interdit d'accéder à des liens en file://

Sous IE ça fonctionne car y'a un trou de sécurité. Sous les vieux Mozilla ça devait être le cas aussi, mais heureusement c'est corrigé depuis.

Publié : 30 nov. 2004, 14:18
par martin
Moi je pense que je trouve que c'est plutôt un bug de firefox 1.0 :?
En http:// il t'est interdit d'accéder à des liens en file://
Je viens un peu de chercher, j'ai rien trouvé de tel ...

Je précise qu'en essayant, çà fonctionne sous mozilla 1.7.3.
D'ailleurs, je ne vois pas (mais je loupe peu être quelque chose...) en quoi c'est une faille de sécurité que de pouvoir afficher ses propres fichiers sur son navigateur.

J'allai envoyer le message quand je suis tombé sur :
http://www.chevrel.org/fr/faq/#N13

Il s'avèrait donc que se soit un choix délibéré de firefox (je vois toujours pas pourquoi). La seule solution étant de modifier une préférence utilisateur de firefox (côté client donc), ce qui ne satisfera évidemment pas Lépine JEAN...
désolé

Publié : 30 nov. 2004, 14:31
par Lépine JEAN
Je ne vois plus du tout comment résoudre le problème pour faire les upload à partir du disque dur client !!!

Remarque : en enlevant l'entête "file://" je n'ai plus le même message d'erreur (voir plus haut sur ce forum) mais ça ne marche toujours pas !!!

Publié : 30 nov. 2004, 14:37
par jv2759
eventuelement ouvre un pop up (est oui des fois cela peux servire;) tu demande d'uploader l'image. Une fois que cela est fait, alors renvois dans la pages principales l'adresse de l'image que tu vien de télécharger...

Publié : 30 nov. 2004, 16:13
par martin
>Je ne vois plus du tout comment résoudre le problème pour faire les upload à partir du disque dur client !!!

Ben, heu là, au milieu de tous tes javascript (le prend pas mal, mais je trouve que c'est un sacré capharnaüm à lire si on est pas le codeur :D ), pour le faire simplement c'est pas gagné.
Toujours est il qu'il faut, je pense, revenir à du basique. Tu génères des champs de type file (texte1, texte2...), donc l'utilisateur clique sur les boutons "parcourir", et donc tu peux récupérer sur le serveur le fichier choisi, et tu peux afficher (dans le champs correspondant et/ou ailleurs) la value (par js)pour lui indiquer quel fichier il a choisi, avant l'envoi.
Pour ce qui est de la prévisualisation avant qu'il ne l'envoie, soit les utilisateurs de firefox ne l'ont pas, soit effectivement l'idée de jv2759 peut peut être marcher. En déclenchant une popup contenant le lien local (file:///c:/....), firefox devrait l'afficher. En effet, il semble que firefox refuse les liens locaux lorsqu'ils sont dans une page appelée par http, mais ne les refuse pas quand l'url de l'objet est local. Essaie de taper file:///c:/ dans la barre d'adresse de firefox, çà marche.

Sinon, il est évident que ton projet est déjà abouti, et sans aucune présomption de ma part, tu devrais te pencher pour tes prochains travaux sur la séparation du contenu et de la présentation par CSS, ainsi que sur la séparation des comportements. Le code se trouverait largement allégé et serait plus lisible, et donc plus facile à maintenir.
Mais c'est du beau boulot.

Publié : 30 nov. 2004, 16:28
par bobo
martin a écrit :Il s'avèrait donc que se soit un choix délibéré de firefox (je vois toujours pas pourquoi). La seule solution étant de modifier une préférence utilisateur de firefox (côté client donc), ce qui ne satisfera évidemment pas Lépine JEAN...
Parce que si on ne met pas ce genre de restriction, il devient très facile de tester si certains fichiers sont présent sur ton ordinateur, il devient théoriquement possible aussi d'analyser un certain nombre de fichiers à ton insu (par exemple les fichiers où sont stockés tes mots de passe).
Bref, je n'ai pas vraiment le temps de fabriquer un exemple concret pour montrer que c'est potentiellement dangereux (de plus il faut peut-être d'autres failles pour réellement exploiter le problème), mais ça l'est.

Publié : 30 nov. 2004, 17:43
par PsyDk
C'est une faille de sécurité corrigée récemment :

https://bugzilla.mozilla.org/show_bug.cgi?id=69070

Publié : 30 nov. 2004, 17:49
par PsyDk
Lépine JEAN a écrit :Je ne vois plus du tout comment résoudre le problème pour faire les upload à partir du disque dur client !!!
Fais ça en PHP.

Un bout de code. Pas parfait mais ça fait une base de départ :

Code : Tout sélectionner

if( isset($_GET["store"]) )
{
	$strTmpFilePath = $_FILES["filePicture"]["tmp_name"]; // Chemin du fichier téléchargé

	if( is_uploaded_file($strTmpFilePath))
	{
		$strFileName = $_FILES["filePicture"]["name"]; // Nom du fichier seul
		$strFilePath = "gfx/" . $strFileName;
		move_uploaded_file($strTmpFilePath, $strFilePath);
		clearstatcache();
	}
	else
	{
		echo "<p>Erreur de téléchargement.<p>";
	}
}

Code : Tout sélectionner

<form method="post" enctype="multipart/form-data" action="gfx-upload.php?store=1">

<p><input name="filePicture" type="file" size="50" /></p>
<p><button type="submit">Télécharger l'image</button></p>

</form>
Avec ça l'image se retrouve sur le serveur, et tu peux l'afficher tranquillement dans un élément img.

Publié : 01 déc. 2004, 07:24
par Lépine JEAN
Le gros problème c'est que la solution (php ou pas) passera par un enregistrement sur le serveur et donc un réaffichage de la page alors que j'avais essayé depuis le départ de donner une souplesse visuelle à la création de page en forçant au max les affichages sans avoir à recharger la page !