2010-09-04 6 views
0

J'essaie d'utiliser le plugin swfupload pour télécharger des fichiers. La chose est, je veux que l'utilisateur puisse changer le répertoire pour télécharger. La chose étrange est (et peut-être cela est dû à ma connaissance limitée de jQuery) qu'il semble que j'ai le bon répertoire lors de la vérification avec une alerte, mais toujours le téléchargement va au répertoire précédemment sélectionné.Modifier le répertoire dans swfupload plugin jQuery?

I.e. si j'ouvre la page et que je clique sur le lien de téléchargement, un div appelé uploadPanel s'affiche, qui charge le fichier swfupload. Je peux faire le premier téléchargement bien. Mais si je choisis un répertoire différent, cela ne fonctionne pas. J'ai mis dans une alerte pour tester que la variable pour le répertoire courant est correcte. Cette alerte affiche toujours le répertoire actuel correctement. Mais toujours quand la méthode d'action dans le code du serveur est appelée, le répertoire est toujours pour le premier répertoire sélectionné que j'ai eu dans le premier téléchargement.

Voici le code jQuery:

<script type="text/javascript"> 
    var uploadDir; 
    $(function() { 
     $("#uploadPanel").hide(); 
     var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>"; 
     loadFileManager(); 

     $("#uploadLink").click(function (event) { 
      $('#uploadPanel').show(); 


      alert("uploadDir: " + uploadDir); //NOTE!!!: This shows the correct current directory, and yet, in post_params below, a previous directory is still sent to the action method in the Controller. How is this possible when the alert shows the correct directory? 
      $("#inputFile").makeAsyncUploader({ 
       upload_url: "/Upload/AsyncUpload/", 
       flash_url: '/Scripts/swfupload.swf', 
       button_image_url: '/Scripts/blankButton.png', 
       post_params: { token: auth, currentDirectory: uploadDir }, 
       use_query_string: true, 
       disableDuringUpload: 'INPUT[type="submit"]' 
      }); 

      $("#closeButton").click(function() { 
       $("#uploadPanel").hide(); 
       $("#inputFile_completedMessage").hide(); 
      }); 
     }); 
    });   

</script> 

Note: le UploadDir est défini ailleurs, dans un fichier séparé js. Mais le fait est que la valeur est toujours correcte dans l'alerte, alors pourquoi pas dans l'appel à la méthode d'action?

Répondre

0

Vous pouvez modifier la valeur des paramètres POST à ​​volonté en appelant la méthode: setPostParams() sur l'instance de SWFUloader, afin de ne pas avoir à recréer l'instance à chaque fois. AUSSI, les variables POST ne sont que des paires clé/valeur arbitraires. Pour qu'ils signifient quelque chose - dans ce cas, pour changer le répertoire de téléchargement - vous devrez les manipuler dans votre code côté serveur, ce que je suppose être ici:/Upload/AsyncUpload (bien que j'ai des doutes, car je Je m'attendrais à ce que ce soit quelque chose comme /Upload/AsyncUpload.asp dans ce cas). De plus, puisque vous utilisez jQuery de toute façon, vous devriez envisager d'utiliser le plugin jQuery.swfupload très pratique. Rend des charges plus faciles lorsque vous travaillez avec SWFUploader.

http://github.com/ifunk/swfupload-jquery-plugin

+0

Je ne sais pas si je vous ai mal compris ... J'utilise le plugin SWFUpload. – Anders