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 :

[JQuery] jquery ajaxfileupload sur la version en ligne de mon site


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 33
    Par défaut [JQuery] jquery ajaxfileupload sur la version en ligne de mon site
    Bonjour à tous,

    Je développe une application web J2EE basée sur struts, utilisant principalement des jsp et de l'ajax pour le frontend et des servlet java pour le backend.
    J'ai développé une fonctionalité qui permet à l'utilisateur d'uploader un fichier de données brut (CSV) sur le site pour qu'il soit parsé et affiché comme il faut.
    J'utilise pour ce faire le plugin ajaxfileupload de jquery. Tout fonctionne très bien en local, mais il ne se passe rien sur la version en ligne : il semblerait que le fichier ne soit pas transmis au backend pour le parsing.
    C'est très étrange et pas facile à debugger. Quelqu'un aurait-il eu le même problème, ou aurait-il un début d'explication?

    Voici le bout de code que j'utilise, si ca peut aider...

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    var UICreateUploadForm = function(id, uploadServletName, choiceLabel) {
    	var div = jQuery("<div style='float:none; clear:both; height: 50px; margin:0px;'>");	
     
    	var labelDiv = jQuery("<div>");
    		labelDiv.addClass("uploadLabel");
    		labelDiv.html(choiceLabel);	
     
    	var formDiv = jQuery("<div>");
    		formDiv.addClass("uploadFormDiv");
    		formDiv.append(jQuery('<form enctype="multipart/form-data" onsubmit="return false;" action="'+uploadServletName+'" method="POST">'));
     
    	var fieldSet = jQuery('<fieldSet style="border:0px">');
    	var olList = jQuery('<ol>');
    	var listItem = jQuery('<li class="upload_item" id="'+id+'_upload" style="display:none;">');
    	var fileInput = jQuery('<input name="myFile" id="'+id+'" type="file">');
    	listItem.append(fileInput);
    	var submitButton = UIAppendButton(listItem);
    	submitButton.click(function(){
    		UIAjaxFileUpload(id, uploadServletName);
    	});
    	olList.append(listItem);
    	if (id == ID_MYROUTES) {
    		debug("my routes...");
    	} else {
    		UICreateChoiceBox(fieldSet, "select_source_"+id, "", myDataSourceList, 'doChangeMyDataSource(event, "'+id+'")');
    	}
    	UIAppendSpinner(olList, id);
    	fieldSet.append(olList);
    	//form.append(fieldSet);
    	formDiv.append(fieldSet);
    	div.append(labelDiv);
    	div.append(formDiv);
    	doChangeMyDataSourceToDatabase(id);
    	return div;
    }
     
    var UIAjaxFileUpload = function(id, uploadServlet) {
    	debug("ajaxFileUpload -> "+uploadServlet);
    	getLoadingSpinner(id).ajaxStart(function(){
    		$(this).show();
    	}).ajaxComplete(function(){
    		$(this).hide();
    	});
    	$.ajaxFileUpload ( {
    		url:uploadServlet, 
    		secureuri:false,
    		fileElementId:id,
    		dataType: 'json',
    		success: function (data, status) {
    			UICreateMyDataResultItemsTable(id, data, status);
    		},
    		error: function (data, status, e) {
    			UIUploadFailed(id, data, status, e);
    		}
    	});
    	return false;
    }
    Merci pour votre aide, A+
    gZg

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 33
    Par défaut
    Bon, vu que le sujet a l'air d'inspirer tout le monde, voici quelques éléments supplémentaires.

    Aussi loin que j'ai pu débugger, j'ai constaté que la requête envoyée au serveur est une méthode GET, alors que l'upload de fichier n'est sensé marcher qu'avec du POST. Est-ce bien exact?
    Le problème est que dans tout mon code, je n'ai vu aucune explication à ce GET. Le formulaire d'upload est bien en POST et toutes les autres servlet sont appelées correctement.

    Ce qui m'amène à penser qu'il s'agit peut être d'un problème de firewall ou proxy ou je ne sais quoi qui pourrait bloquer l'upload en amont du serveur. Ce qui expliquerait pourquoi ce problème n'apparaît qu'en ligne.

    Aussi, je requière vos remarques/conseils/opinions/critiques/insultes sur cette affirmation parce que je ne suis pas très calé sur le sujet.

    Merci!!
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 33
    Par défaut
    J'ai finalement trouvé la solution, si ca peut aider qqn :

    Il manquait le paramètre sessionId dans ma requête d'upload. De ce fait, un filtre Tomcat créait une redirection qui transformait ma requête POST en GET (), avec un nouveau sessionId.

    Voilà, merci quand même à mes nombreux lecteurs.
    A bientôt

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

Discussions similaires

  1. Question sur la mise en ligne d'un site ASP.NET
    Par Serizawa dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/12/2013, 17h54
  2. Réponses: 1
    Dernier message: 10/08/2010, 16h45
  3. Réponses: 1
    Dernier message: 04/11/2008, 14h17
  4. [TinyMCE] Clic sur "image" ouvre un popup avec mon site
    Par whitespirit dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 27/04/2008, 08h22
  5. J'ai un problème avec la mise en ligne de mon site web
    Par elodie13 dans le forum Internet
    Réponses: 29
    Dernier message: 28/08/2006, 19h08

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