2010-08-25 17 views
1

J'essaye d'implémenter SWFUpload pour télécharger des images sur ma page. Le chemin de fichier est stocké dans une table avec un identifiant unique en tant que clé et le fichier est stocké sur le serveur avec un nouveau nom de fichier. J'ai besoin de l'identifiant ou du nom de fichier pour que je puisse accéder à cette information quand j'en ai besoin plus tard. Est-ce possible et comment est-ce fait? Peut-être que je pourrais mettre à jour un asp: label?SWFUpload asp.net retourne le nouveau nom de fichier des fichiers téléchargés

J'ai le code suivant:

upload.aspx.cs (je ne l'ai pas mis en œuvre la base de données d'économie encore que je veux savoir si cela est possible d'abord)

 protected void Page_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      // Get the data 
      HttpPostedFile postedfile = Request.Files["Filedata"]; 

      int n = 0; 
      string fullPath; 

      while (true) 
      { 
       fullPath = Server.MapPath("Img\\") + n.ToString() + RemoveSpecialChars(postedfile.FileName); 
       if (File.Exists(fullPath)) 
       { 
        n++; 
       } 
       else 
       { 
        postedfile.SaveAs(fullPath); 
        break; 
       } 
      } 

     } 
     catch 
     { 
      // If any kind of error occurs return a 500 Internal Server error 
      Response.StatusCode = 500; 
      Response.Write("An error occured"); 
      Response.End(); 
     } 
     finally 
     { 

      Response.End(); 
     } 
    } 
par défaut

. ASPX

 <!-- 
    Image upload 
    --> 
    <script type="text/javascript" src="Scripts/swfupload.js"></script> 
    <script type="text/javascript" src="Scripts/handlers.js"></script> 
    <script type="text/javascript"> 
     var swfu; 
     window.onload = function() { 
      swfu = new SWFUpload({ 
       // Backend Settings 
       upload_url: "Upload.aspx", 
       post_params: { 
        "ASPSESSID": "<%=Session.SessionID %>" 
       }, 

       // File Upload Settings 
       file_size_limit: "5120", //5MB 
       file_types: "*.jpg", 
       file_types_description: "JPG Images", 
       file_upload_limit: 0, // Zero means unlimited 

       // Event Handler Settings - these functions as defined in Handlers.js 
       // The handlers are not part of SWFUpload but are part of my website and control how 
       // my website reacts to the SWFUpload events. 
       swfupload_preload_handler: preLoad, 
       swfupload_load_failed_handler: loadFailed, 
       file_queue_error_handler: fileQueueError, 
       file_dialog_complete_handler: fileDialogComplete, 
       upload_progress_handler: uploadProgress, 
       upload_error_handler: uploadError, 
       upload_success_handler: uploadSuccess, 
       upload_complete_handler: uploadComplete, 

       // Button settings 
       button_image_url: "Style/Images/XPButtonNoText_160x22.png", 
       button_placeholder_id: "spanButtonPlaceholder", 
       button_width: 160, 
       button_height: 22, 
       button_text: '<span class="button">Välj bilder</span>', 
       button_text_style: '.button { font-family: Helvetica, Arial, sans-serif; font-size: 14pt; }', 
       button_text_top_padding: 1, 
       button_text_left_padding: 5, 

       // Flash Settings 
       flash_url: "swfupload.swf", // Relative to this file 
       flash9_url: "swfupload_FP9.swf", // Relative to this file 

       custom_settings: { 
        upload_target: "divFileProgressContainer" 
       }, 

       // Debug Settings 
       debug: false 
      }); 
     } 
    </script> 

default.aspx

<div id="swfu_container" style="margin: 0px 10px;"> 
     <div> 
      <span id="spanButtonPlaceholder"></span> 
     </div> 
     <div id="divFileProgressContainer" style="height: 75px;"></div> 
    </div> 

Merci.

+0

Cette démo ressemble vraiment qu'il fait ce que je veux avec succès: http://demo.swfupload.org/v220/formsdemo/index.php Cependant, je n'ai aucune idée de comment upload.aspx/upload.aspx.cs (ils ont upload.php) devrait ressembler. – Mikael

Répondre

1

J'ai trouvé la solution: Si je regarde à l'intérieur handlers.js (fournies par SWFUpload) Je peux attraper ce qui est renvoyé par les upload.aspx.cs

Inside write:

protected void Page_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      // Get the data 
      HttpPostedFile postedfile = Request.Files["Filedata"]; 

      Response.Write((postedfile.FileName); //Returns filename to javascript 

     } 
     catch 
     { 
      // If any kind of error occurs return a 500 Internal Server error 
      Response.StatusCode = 500; 
      Response.Write("An error occured"); 
      Response.End(); 
     } 
     finally 
     { 

      Response.End(); 
     } 
    } 
} 

handler.js intérieur (téléchargé de la page de démonstration) remplacer uploadSuccess avec:

function uploadSuccess(file, serverData) { 
try { 

    alert(serverData); 

    addImage("thumbnail.aspx?id=" + serverData); 

    var progress = new FileProgress(file, this.customSettings.upload_target); 

    progress.setStatus("Thumbnail Created."); 
    progress.toggleCancel(false); 


} catch (ex) { 
    this.debug(ex); 
} 
}