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

jQuery Discussion :

Comment poster une vidéo avec ajax et json


Sujet :

jQuery

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut Comment poster une vidéo avec ajax et json
    Bonjour,

    Je souhaite poster une vidéo avec ajax en consommant un web service restful .
    Voici le code html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div>
    	<input id="uploadFile" type="file" name="files">
    	<button id="submit_btn">Upload</button>
    	<input type="reset">
    </div>

    Mon appel ajax :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    $('#submit_btn').click(function (){
    	//alert("toto");
    	var myURL = "http://example.app.com/content-rest/contents/app_domain";
    	alert(myURL);
    	var video = document.getElementById("uploadFile");
            var vfile = video.files[0];
    	alert(vfile.name);
    	alert(vfile.size);
    	$.ajax({
    		type : "POST",
    		dataType : "json",
    		async: true,
    		url : myURL,
    		contentType: "multipart/form-data",
    		//enctype: 'multipart/form-data',
    		data : {	
    			files : vfile
    		},
    		success : function(data) {
    			alert("toto");
    			alert(data);
    		},
    		error : function(jqXHR, textStatus, errorThrown) {
    			alert("error sur fct ajax");
    			alert(textStatus);
    			alert(errorThrown);
    		}
    	});
    });
    J'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"status":{"message":"the request was rejected because no multipart boundary was found"}}
    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    on ne peux pas uploader des fichiers avec ajax ...
    ajax ne converse qu'en string

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    C'est embêtant parce que le ws rest que j'appelle attend la vidéo comme paramètre. En fait, je passe par ajax car je dois manipuler les données de retour de ce web service...

    Est-ce qu'il y'a un autre moyen de le faire ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    en passant par flash

  5. #5
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    Désolé, je vois pas trop comment avec flash je pourrais appeler le web service restful...
    Tu as un exemple ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    nasuploader ...

  7. #7
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    je me suis peut-être mal exprimé..
    Je ne cherche pas à télécharger la vidéo avec Ajax mais j'appelle un web service avec ajax et je veux mettre ma vidéo parmi mes data au format JSON.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    tu ne peux mettre que le chemin (src) de la video, pas le video en elle même

  9. #9
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    Si ça ne t'embête pas comment tu le récupères et comment tu le met dans je data JSON ?

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    ton web service doit te retourner une chaine JSON correctement formatée

    en général avac php par exemple il suffit d'avoir les éléments dans un array et d'en faire un json_encode()

    cote client lors de la récupération, là il siffut d'avoir précisé le format de la réponse attendue, soit directement avec un getJSON qui récupère implicitement un json, soit en précisant à la méthode ajax, get ou post le dataType: "json".

    Tu auras alors à ta disposition dans le success de ton ajax un json que tu pourras exploiter normalement.

  11. #11
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    Malheureusement je ne suis pas sur PHP mais HTML.
    J'ai bien compris le principe pour la récupération au format json...
    Ce qui pose problème c'est le post de la video ..Plus précisément, ajax ne semble pas vouloir ma manière de gérer le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var video = document.getElementById("uploadFile");
            var vfile = video.files[0];
    Donc quand je rajoute le fichier dans Ajax comme suit ça marche pas...à cause de vFile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    $.ajax({
    			type : "POST",
    			dataType : "json",
    			async: true,
    			url : myURL,
    			contentType: "multipart/form-data",
    			processData: false,
     
    			data : {			
     
    				FILE_EXTENSION : 'mp4',
    				description: 'test_video',			
    				files : vfile
    			},
     
    			success : function(data) {
    				alert("toto");				
    			},
    			error : function(jqXHR, textStatus, errorThrown) {
    				alert("error sur fct ajax");
    				alert(textStatus);
    				alert(errorThrown);
    			}
    		});
    Est-ce que le "FormData" peut-être une solution fiable ?

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Ce qui pose problème c'est le post de la video .
    ???

    post ??


    encore une fois ajax ne permet pas de transferer des fichiers !!!!
    ajax ne converse qu'en string

  13. #13
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    OK.....Merci je vais donc faire autrement

  14. #14
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    Hello

    Je me suis orienté vers une autre piste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $.getMultipartData = function(frmName){
    	var videoname = $('[name=files]').val();
    	var initBoundary= $.randomString();
    	var strCRLF = "\r\n";
    	var strMultipartBody = "";
    	strMultipartBody +=	strBoundary	+ strCRLF;
    	strMultipartBody += 'content-Disposition: form-data; name="files"; filename="'+ videoname+'"'+strCRLF;
    	strMultipartBody += 'content-Disposition: attachment; name="files"; filename="'+ videoname+'"'+strCRLF;
    	strMultipartBody += "content-Type: application/octet-stream"+ strCRLF;
             //strMultipartBody += "content-Type: video/mp4"+ strCRLF +strCRLF;
     
    	//End the body by delimiting it
    	strMultipartBody += strBoundary + "--" + strCRLF;
    	//Return boundary without -- and the multipart content
    	return [initBoundary,strMultipartBody];
    }
    et le post :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $('form[name="videoUploadForm"]').on('submit', function(e) {
    		//alert("videoUploadForm");
    		e.preventDefault();
    		strContent = $.getMultipartData('#'+this.id);
    		alert(strContent);
    	     $.ajax({
    	        type: 'POST',
    		    enctype:"multipart/form-data",
    		    encoding:"multipart/form-data",
    	        url: myURL,
    	        cache: false,
    	        processData: false,
    		    contentType: 'multipart/form-data; boundary='+strContent[0],
    		    data: strContent[1],
     
                success: function(data){
                alert(data);
                },
     
                error : function(jqXHR, textStatus, errorThrown) {
    				alert("error sur fct ajax");
    				alert(textStatus);
    				alert(errorThrown);
    			}
     
    	     });
     
    	});
    J'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"status":{"message":"Stream ended unexpectedly"}}

  15. #15
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    Après modifié quelques espaces et retour-chariot j'ai maintenant cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Processing of multipart/form-data request failed. Stream ended unexpectedly
    Qui peut m'aider svp ???

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    a ma cponnaissance, il n'est toujours pas possible de tranférer quelque sorte de fichier que ce soit en, ajax ...

    je le redis , ajax ne sait converser avec le serveur qu'en string !
    Il est donc à mon avis impossible de tenter des bidouille du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    enctype:"multipart/form-data",
    		    encoding:"multipart/form-data",
    	        url: myURL,
    	        cache: false,
    	        processData: false,
    		    contentType: 'multipart/form-data; boundary='+strContent[0],
    de part la nature même du protocole utilisé par ajax xmlhttprequest

    Ce serait d'ailleurs un grosse faille !!

Discussions similaires

  1. Comment poster une demande avec du code
    Par voyager75 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 13/02/2012, 22h14
  2. [WD15] Comment Lancer une vidéo avec lecteur installé par défaut
    Par papydev dans le forum WinDev
    Réponses: 2
    Dernier message: 14/07/2011, 15h39
  3. Réponses: 3
    Dernier message: 16/01/2008, 08h32
  4. Comment poster une image dans un blob avec IBStoredProc ?
    Par colorid dans le forum Bases de données
    Réponses: 0
    Dernier message: 02/12/2007, 08h51
  5. [eclipse][plugin] Comment avoir une fenêtre avec focus
    Par relivio dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/04/2004, 15h54

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