2009-12-15 5 views
3

J'ai un formulaire qui télécharge un fichier, je voudrais traiter le fichier en ligne avec ajax mais je ne sais pas comment je peux obtenir les données avec ajax.Ajax téléchargement de fichier

Dans mon script, j'utiliser cette méthode:

$.ajax(
      { 
       type: "POST", 
       url:  "upload.php", 
       data: ({ file : '???' }), 
       success: function(msg) 
       { 
        $('#upload_box').html(msg); 
       } 
      }); 

Comment puis-je déclarer le var 'file' aller chercher les données du fichier? (nom de fichier, tmp_name, type, taille, etc.)

+1

Avez-vous regardé Uploadify? C'est ce que j'utilise pour le téléchargement de fichiers. Très simple et facile à utiliser. – Steven

+0

Je préfère utiliser un script Ajax, pas un flash ... J'ai besoin de faire un script avatar gmail, maintenant je peux traiter les formulaires avec la méthode décrite ci-dessus, j'espère pouvoir traiter les données FILE aussi avec ajax ... – Pennywise83

+0

C'est jQuery combiné avec le flash. Le fichier est téléchargé avec flash dans le dossier TMP des serveurs. De là jQuery vous appelle n'importe quel fichier .php et vous pouvez gérer le reste là. Vous pouvez obtenir des informations sur le fichier, la taille, etc. – Steven

Répondre

2

Vous ne pouvez pas faire cela avec une requête AJAX standard. La solution de contournement la plus courante consiste à publier le fichier sur un iFrame caché, comme illustré dans this tutorial.

Puisque vous utilisez jQuery, vous pouvez trouver la bibliothèque AJAX Upload utile.

2

Vous pouvez télécharger le fichier sur le serveur, appeler un script php pour lire de nouveau à vous, puis le jeter dans quelque étiquette que vous vouliez lire

  //In your onUpload callback 
      var req = createRequest(); 
      req.open("GET", 'upload.php?file=' + filename,true); 

      req.send(null); 
      //Do your status checking 
      var filetext= req.responseText; 

cadres ne résolvent pas tous les problèmes, et si vous en utilisez un qui nécessite un travail de contour, vous devriez revenir aux bases, car cela peut être fait en utilisant vanilla javascript avec du PHP.

+0

Ce n'est pas le cadre qui doit être travaillé, mais le comportement HTML de base. Vous ne pouvez pas faire de téléchargement de fichiers en XHR. –

+0

XHR (XMLHTTPRequest) n'est pas un comportement HTML. Son Javascript. Je fais la création de fichiers à la volée en utilisant javascript et php, et je relis le fichier pour tous mes commentaires, et c'est à peu près la même chose, seulement vous devez attendre que le fichier soit déplacé de la zone temp, au zone finale sur le serveur. Si vous souhaitez plus d'informations à ce sujet, posez une question et laissez-moi savoir où c'est, et je posterai du code pour vous. – MikeEL

+0

Devrait avoir dit comportement Http. En fait, c'est un peu plus bas que javascript. La plupart des navigateurs fournissent une API via js mais IE 5-6 l'a implémenté comme un objet ActiveX à la place. Mon point était ceci n'est pas un problème de cadre de js. –