2010-02-28 4 views
1

J'essayais de télécharger des fichiers en utilisant la méthode de demande PrototypeJs mais j'ai échoué.

Le code J'utilise,

<form enctype="multipart/form-data" id="form1" runat="server" action="ajax.aspx" 
onsubmit="upMe(this);return false;" > 

Si je retourne vrai au lieu de false, le fichier est téléchargé, mais qui fait postback que je ne veux pas que je suis en utilisant la demande de la méthode de prototypejs.

Et la fonction Upme est très simple,

function upMe(frmEle) { 
     $(frmEle).request({ 
      method: 'post', 
      parameters: {}, 
      onComplete: function() { alert('file has been uploaded'); } 
     }); 
    } 

Ce que je suis absent pour télécharger le fichier de la manière ci-dessus?

Merci beaucoup.

Répondre

3

Le problème est que vous utilisez AJAX au lieu des méthodes normales de soumission pour publier le formulaire. Cela nécessiterait JavaScript pour lire le fichier et l'inclure dans la soumission, mais comme vous pouvez imaginer la possibilité pour un script de lire un fichier local du client serait plutôt un gros risque de sécurité :-)

La réponse à ce problème consiste à utiliser un élément caché à la place, et soumettre la demande à cela. Vous pouvez enregistrer des gestionnaires d'événements dans l'événement onload d'iframe pour un rappel de style inachevé.

http://www.openjs.com/articles/ajax/ajax_file_upload/

+0

Merci beaucoup. L'utilisation d'Iframe revient à soumettre les fichiers, ce qui provoque une publication partielle et non pas la méthode Ajax. Bien qu'utilisant Ifrmae le but est servi. Pourriez-vous donner un exemple où ajax joue vraiment dans le téléchargement de fichier. – Hoque

Questions connexes