2010-03-27 2 views
0

J'ai une section qui, une fois créé, prend en images, mais lorsque vous modifiez cet élément je ne veux pas qu'ils re-upload aucun ne change d'images juste pour changer une description ou un nom .formulaire avec téléchargement multiple, mais ne permet pas de télécharger sur les problèmes d'édition

j'ai créé ce qui traite du transfert de fichiers:

public void UploadFiles(string currentFileName, FormCollection form) 
    { // loop through all files in form post 
     foreach (string file in Request.Files) 
     { 
      HttpPostedFileBase hpf = Request.Files[file]; 
      // if no file is uploaded, we could be editing so set to current value 
      if (hpf.ContentLength == 0) 
      { 
       form[file] = currentFileName; 
      } 
      else 
      { //rename the file unique so we dont clash with names 
       var filename = hpf.FileName.Replace(" ", "_").Replace(".", DateTime.Now.Date.Ticks + "."); 

       UploadFileName = filename; 
       hpf.SaveAs(Server.MapPath("~/Content/custom/" + filename)); 
       // set the name of the file in our post to the new name 
       form[file] = UploadFileName; 
      } 

     } 

     // ensure value is still sent when no files are uploaded on edit 
     if(Request.Files.Count <= 0) 
     { 
      UploadFileName = currentFileName; 
     } 
    } 

tout fonctionne très bien quand une seule image est nécessaire (CurrentFileName), mais il y a maintenant une nouvelle image disponible prendre à un total de 2 images Dans la base de données, currentFileName est obsolète. Quelqu'un at-il abordé cela et comment j'ai frappé un mur avec celui-ci. pensé de string [] currentFiles mais ne peux pas voir comment faire correspondre cela dans le fichier de chaîne dans Request.Files. Si cela aide, je travaille également avec des modèles pour la forme afin que je puisse passer sur le modèle, mais je ne pense pas que votre capable de faire model.file sans une sorte de réflexion.

aide très appréciée.

grâce

+0

je pense que je l'ai pensé à quelque chose, en passant un NameValueCollection puis en utilisant le formulaire [fichier] = currentFiles [fichier]; est-ce correct? mais alors que faire à propos de la dernière si? – davethecoder

Répondre

0
solution

finalement redressées ma tête

public void UploadFiles(FormCollection form, NameValueCollection currentFiles) 
    { 
     foreach (string file in Request.Files) 
     { 
      HttpPostedFileBase hpf = Request.Files[file]; 

      if (hpf.ContentLength == 0) 
      { 
       form[file] = currentFiles[file]; 
      } 
      else 
      { 
       var filename = hpf.FileName.Replace(" ", "_").Replace(".", DateTime.Now.Date.Ticks + "."); 

       UploadFileName = filename; 
       hpf.SaveAs(Server.MapPath("~/Content/custom/" + filename)); 

       form[file] = UploadFileName; 
      } 

     } 

     if(Request.Files.Count <= 0) 
     { 
      foreach (var file in currentFiles.AllKeys) 
      { 
       form[file] = currentFiles[file]; 
      } 
     } 
    } 

anyfeedback et sudgestions seraient appréciés

Questions connexes