IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Passage d'un fichier vers un formulaire en local (sur le serveur)


Sujet :

AJAX

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Points : 9
    Points
    9
    Par défaut [AJAX] Passage d'un fichier vers un formulaire en local (sur le serveur)
    Bonjour,

    Me voici devant un problème assez "prise de tête". En détail :

    -Le formulaire 1 prends un fichier video et, en option, un fichier de sous titre et/ou un fichier de voixoff.
    -Ensuite, je créé un dossier temporaire dans lequel je déplace les fichiers uploadés.
    -Il me faut ensuite générer 1 html et 2 xml et y copier 6 fichiers types.
    -Je zip le tout et me retrouve avec un fichier du genre "nomvide.zip" qui est stocké sur le serveur.

    Je dois maintenant passer ce fichier à un autre formulaire sur lequel je ne dois absolument rien modifier. Ce formulaire prends en attributs posts quelques champs texte et un champ fichier.

    Mais d'un point de vue technique, je suis perdu...
    Bye,
    goraaa

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Piste
    Salut,

    Si ton fichier zip est sur le server, pourquoi chercher à le descendre sur le client pour le renvoyer de nouveau sur le server ? Pourquoi ne pas stocker dans ton formulaire n°2 l'adresse du zip sur le server (ou quelque chose du même genre) ? Tu le récupères alors depuis le traitement sur le server de ton formulaire 2.


    Enfin, même s'il est peut-être possible de faire un aller retour server-client, cela ne se fera pas à l'aide d'un champ input type file car tu auras (dans le cas le plus général - hors applet, etc ...) l'impossibilité de stocker ton fichier sur le poste client, et je crois bien qu'il est impossible d'affecter via JS un champ input type file (ce serait une grosse faille de sécurité...).

    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Eviter l'aller retour serveur-client-server, c'est en effet ce que je cherche à faire. Mais comme je ne peux pas modifier le deuxième formulaire, je ne vois pas comment l'apeller pour lui transmettre le fichier.

    J'ai bien trouvé ceci mais... C'est hard
    http://xulfr.org/wiki/ApplisWeb/Request

    Merci!
    goraaa

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Précisions
    Je ne comprends pas bien ton problème.

    Ton formulaire 1 est envoyé vers le server ou ton zip est généré. Ton formulaire 2 est généré sur le server ? Ou est il sur le client dans la même page que ton premier formulaire ? Si c'est ce dernier cas, tu envoies le formulaire 1 par AJAX ?

    ERE
    Quand une tête pense seule, elle devient folle.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Alors j'ai un formulaire 1, celui-là, il est de moi. On lui file une video et il fait son boulot, au final on se retrouve avec un fichier zip dans /var/www/temp sur le serveur.

    Le formulaire 2, il fait partie d'un LMS (ici dokeos) qu'on ne doit pas modifier (sinon, plus de maj possible ^^). Donc, je dois envoyer le fichier zip qui est sur le serveur(/var/www/temp/nomdufichier.zip), sur le formulaire de dokeos (qui est sur le même serveur), comme si le client l'avait pris de chez lui avec un input de type "file".
    (voila le formulaire de dokeos http://www.dokeos.com/images/screen_scormimport.png).

    En gros, simuler l'envoi de fichier, comme si l'utilisateur avait téléchargé le zip pour ensuite le re-uploader (ce qu'on veut éviter ) mais sans passer par là.

    Voilàààààà, merci beaucoup,
    goraaa

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Encore iune précision stp
    Bon, là je comprends un peu mieux !

    Une dernière question: peux tu intervenir sur le traitement du formulaire 2 par dokeos (sur le server: modifier son code). Désolé si cela te semble évident mais je ne connais pas ce produit.
    Citation Envoyé par goraaa Voir le message
    Le formulaire 2, il fait partie d'un LMS (ici dokeos) qu'on ne doit pas modifier (sinon, plus de maj possible ^^).
    ERE
    Quand une tête pense seule, elle devient folle.

  7. #7
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Soyons fous !
    Bon j'ai profité d'un moment de dispo pour jeter un oeil !

    D'abord
    J'ai bien trouvé ceci mais... C'est hard
    http://xulfr.org/wiki/ApplisWeb/Request
    , c'est du XUL et donc limité à Firefox (c'est fait pour développer des applis -modules, etc... - de Firefox).

    Ensuite il me semble impossible de réaliser ce que tu veux faire car on ne peut affecter un champ de type input type="file".

    La meilleure solution résiderait dans la modification du traitement de ton formulaire 2. J'ai regardé dokeos , et d'après ta capture fournie, pour ton info le fichier qui gère le téléchargement est main/upload/upload.php, qui lui transfère le traitement effectif à main/newscorm/lp_upload.php.

    Là, le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	// A file upload has been detected, now deal with the file...
    	//directory creation
            ...
    	$s=$_FILES['user_file']['name'];
    	//get name of the zip file without the extension
           ...
    Tu peux donc injecter ici le nom de ton fichier zip que tu as créé sur le server, et ajuster le bouts de codes qui suivent (diverses vérifications)

    C'est une possibilité, mais c'est vrai que cela modifie le code source de Dokeos. Peut-être est ce un souci de licence pour toi ? A investiguer car Dokeos est distribué sous GPL, donc rien ne t'empêche de modifier les sources...


    ERE
    Quand une tête pense seule, elle devient folle.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Un énorme merci pour cette super idée! J'irai investiguer cette piste dès demain!

  9. #9
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Prévoir un cas
    Si tu investigues dans cette direction, il faudra garder à l'esprit qu'étant donné que ton formulaire sera posté sans fichier, peut-être que le script de traitement du fichier uploadé ne sera pas inclus (au sens d'exécuté; en effet peut-être existe-t-il un test sur cette condition d'existence du fichier uploadé).
    Dans ce cas tu auras à forcer l'inclusion du script.
    Rien de bien méchant.

    ERE
    Quand une tête pense seule, elle devient folle.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Re!

    Voilààà, ca fonctionne. Finallement c'était pas si difficile, y avait déjà un bout de code dans Dokeos qui fait ce que je veux, et c'est ton idée qui m'a aidé à trouver!

    Il me suffit de créer le zip, non pas dans /var/www/temp mais dans dokeos/main/garbage

    Ensuite, un bête form en html fait l'affaire. Je vais l'automatiser avec un XMLHttprequest et voilà.

    Pour info, le form:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <form method="POST" action="dokeos/main/upload/upload.php">
    Nom du fichier (avec extension) : <input type="text" name="file_name" />
    <input type="hidden" name="content_maker" value="--Generic Scorm--" />
    <input type="hidden" name="content_proximity" value="local" />
    <input type="hidden" name="curdirpath" value="/" />
    <input type="hidden" name="tool" value="learnpath" />
    <input type="hidden" name="MAX_FILE_SIZE" value="524288000" />
    <input type="hidden" name="_qf__" value="" />
    <input type="submit" name="submit" value="send" />
    </form>

  11. #11
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Cool
    Donc finalement le plus important c'est de poster vers upload.php en fournissant dans ton cas l'info du nom de fichier déjà sur le server.

    Plutôt élégant. Et au passage j'ai manqué cette possibilité quand j'ai parcouru vite fait le code de upload.php.

    Bonne continuation,

    ERE
    Quand une tête pense seule, elle devient folle.

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Re,

    Merci mais c'etait pas très clair le code, surtout que dokeos utilise pas cette fonction mais le code y est.

    Il y a aussi eu un second problème... Il y a des variables de sessions et autres choses obscures qui se passent à la navigation. Il faut donc avec ouvert le formulaire d'upload pour que mon formulaire fonctionne.

    La solution : XMLHttprequest... Un get sur le formulaire d'upload scorm, avec eval du retour, et une fois le retour interprété, un post vers le fichier upload.php. Tout se fait de maniere transparente pour l'utilisateur, et mon maître de stage sera content

    Encore merci pour l'aiguillage!
    gora

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/03/2011, 15h16
  2. Réponses: 2
    Dernier message: 27/01/2009, 14h31
  3. éxcuter un fichier local sur un serveur distant
    Par DevServlet dans le forum Administration système
    Réponses: 3
    Dernier message: 12/08/2008, 16h52
  4. [struts]lecture d'un fichier en locale sur un serveur:
    Par dasmadja dans le forum Struts 1
    Réponses: 2
    Dernier message: 18/09/2006, 13h37
  5. Réponses: 4
    Dernier message: 02/05/2005, 20h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo