2009-04-28 11 views
20

J'ai un panneau de mise à jour, dans le panneau de mise à jour j'ai fileupload contrôle et contrôle des boutons, cliquez sur bouton, j'ai besoin du fichier que j'ai téléchargé dans le contrôle fileupload dans updatepanel.Chargement de fichier dans AJAX updatepanel sans publication complète

Scénario exact, j'ai 8 onglets sur la page, chaque onglet contient trop d'informations, l'un des onglets est Attachment, lorsque l'utilisateur clique sur Add New Popup Modal Popup, Modal contient detailsview dans Updatepanel et dans la vue détaillée que j'ai contrôle fileupload, lorsque l'utilisateur clique enregistrer bouton, détailsview insérer l'événement déclenché, Dans l'événement d'insertion j'ai besoin du fichier que j'ai télécharger.
S'il vous plaît noter, ma page est lourde et je ne veux pas complet postback.


Quelqu'un at-il une solution à ce problème?

grâce à l'avance votre aide ..... genre

Répondre

36

Pour résoudre ce problème, veuillez consulter l'étape suivante.

  1. Ajoutez ajax-upload à votre vue détaillée.
    • téléchargeur basé sur iframe comme ressource # 1.
    • Silverlight & Téléchargeur Flash. J'aime cette technique car elle ne nécessite aucun script côté serveur pour afficher l'état actuel du téléchargement. Mais en HTML5, vous pouvez créer ceci sans utiliser de plug-in de navigateur Web.
    • Uploader commercial comme la ressource # 2. qui utilise l'iframe caché pour le téléchargement.
  2. Télécharger le fichier dans un emplacement temporaire.

    • Réponse du système à l'emplacement temporaire. Ensuite, le client conserve l'emplacement temporaire dans une entrée masquée dans le formulaire détaillé.
    • Conserver l'emplacement temporaire avec session_id. Vous pouvez le stocker dans la base de données ou la variable de session dépend de votre infrastructure.
  3. Lorsque vous cliquez sur le bouton Enregistrer, le système déplace les fichiers à leur emplacement réel

Remarque. Le système supprimera automatiquement le fichier expiré de l'emplacement temporaire.

ressources

  1. ASP.NET File Upload with Real-Time Progress Bar
  2. ASP.NET File Upload like GMail (Commercial)

Mise à jour

Après près d'un an, je viens de trouver un grand 3e parties contrôlent pour cette question. Ceci est un plug-in open source de jQuery. Il nomme Plupload, qui vous permet de télécharger des fichiers à l'aide de formulaires HTML5, Silverlight, Flash ou normaux, et fournit des fonctionnalités uniques telles que la progression du téléchargement, le redimensionnement des images et les téléchargements groupés.

You can try & test Plupload by click here.

+1

Bonne réponse. Je voudrais upvote ... mais je suis sorti pour aujourd'hui !! Quelqu'un donne un +1 à ce type. – jrista

+0

Qu'est-ce qu'il fait mettre le contrôle fileupload sur une autre page et sur le formulaire de pièce jointe, a pris IFRAME et définir la page de contrôle de la source fileuploaded. Sur la page de contrôle de fileupload AsyncPostBack est post retour et télécharger le fichier joint .... Mais j'ai différent Scenario ici Comme je l'ai mentionné dans ma question, j'ai détailléviewview et dans la detailedview j'ai le contrôle de fileUpload et d'autres informations, quand bouton d'utilisateur bouton de sauvegarde J'ai besoin d'informations binaires d'image sur la même page plutôt que sur d'autres, D'ailleurs ce n'est pas solution dans mon scénario .... Merci pour la réponse –

+0

ce type de solution je l'ai implanté tôt, mais ne m'aidera pas dans mon scénario. –

4

Ne peut pas être fait sans binaires coopérants en cours d'installation sur le client. Il n'y a pas de mécanisme sûr pour qu'un framework AJAX puisse lire le contenu d'un fichier et donc pouvoir l'envoyer au serveur. Le navigateur ne prend en charge ce format que comme un message de formulaire en plusieurs parties à partir d'une zone de saisie de fichier.

+0

merci pour la réponse rapide Yat-il un truc ou de contourner pour y parvenir? –

+0

Il n'y a pas de truc ou de travail, c'est le point de sécurité, ce ne serait pas sûr s'il y avait un tour de travail. Considérez le genre de choses qu'un codeur malveillant pourrait faire si un tel tour de travail existait alors vous réalisez pourquoi ce genre de chose est bloqué. – AnthonyWJones

0

Les sites que vous voyez qui ne fournissent cette fonctionnalité utilisent généralement flash ou un iframe afin que le postback se produit dans l'iframe et donne l'illusion d'une demande de paiement ajax.

HTH

Oneshot

+0

si vous utilisez IFrame, l'information téléchargée ne sera disponible que dans la source de la page IFrame –

+0

mais je n'ai pas de scénario comme celui-ci, j'ai essayé cette solution. –

1

Le problème est la façon dont le fonctionnement du contrôle de téléchargement de fichiers HTML, n'a rien à voir avec ASP.net, pour le contrôle de téléchargement de fichiers fonctionne, vous avez besoin d'un poste complet de la Données de formulaire. Vous pouvez seulement simuler que vous ne faites pas une publication complète, en faisant toutes les opérations dans un iframe caché qui fait le téléchargement réel

+0

Vous avez peut-être besoin de donner plus d'informations pour obtenir plus de votes, mais comment vous décrivez est essentiellement comment les sites comme GMail font leur Ajax. – Craig

0

J'ai essayé swfupload (http://swfupload.org/), mais gardez à l'esprit que vous devez sauter via des cerceaux si vous utilisez l'authentification par formulaires avec des navigateurs non IE. C'est apparemment un bug flash, et ce n'est pas corrigé dans le flash 10. J'ai décidé de ne pas l'utiliser dans notre framework à cause de ce bug, mais c'était par ailleurs un très bon produit.

0

Je recommande le widget téléchargeur de YUI. Voir http://developer.yahoo.com/yui/uploader/

Je pense que vous pourriez l'utiliser pour atteindre votre objectif. Votre javascript aurait besoin de récupérer le fichier sur le client à partir du serveur après avoir terminé son téléchargement. Mais la page ne serait pas rafraîchie - le téléchargement se fait par flash et un iframe caché. Le téléchargement pour montrer le contenu du fichier à l'utilisateur serait via ajax.

Si l'utilisateur n'approuve pas le téléchargement, il suffit de faire un autre appel ajax au serveur pour supprimer le fichier.