2010-04-12 6 views
1

im en utilisant le code ci-dessous pour téléchargerComment changer le nom de fileupload

protected void UploadButton_Click(object sender, EventArgs e) 
{ 
    if(FileUploadControl.HasFile) 
    { 
    try 
    { 
     string filename = Path.GetFileName(FileUploadControl.FileName); 
     FileUploadControl.SaveAs(Server.MapPath("~upload/") + filename); 
     StatusLabel.Text = "Upload status: File uploaded!"; 
    } 
    catch(Exception ex) 
    { 
     StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message; 
    } 
    } 
} 

Je souhaite modifier le nom du fichier de téléchargement ... Je dois attribuer un nom de fichier pour chaque fichier téléchargé comment?

Répondre

5

Cette ligne pickes le nom du fichier téléchargé:

string filename = Path.GetFileName(FileUploadControl.FileName); 

Cette ligne indique au serveur pour enregistrer le fichier comme:

FileUploadControl.SaveAs(Server.MapPath("~/") + filename); 

changer simplement la valeur de filename à quelque chose D'autre avant d'enregistrer.

+0

Je veux changer le nom du fichier téléchargé pas dans le nom de stockage du chemin du serveur – Domnic

+0

pour chaque fichier de téléchargement je dois déclarer le nom – Domnic

+0

@Domnic - Vous ne pouvez pas changer le 'FileUploadControl.FileName'. C'est ce qui vient du navigateur et de l'ordinateur qui télécharge le fichier. – Oded

2

il y a un moyen de changer le nom du fichier que nous avons téléchargé à notre « ~ Serveur/UserFolder » (par exemple) ..

je pensais vraiment renommer le fichier avant la commande .SaveAs, qui va être comme:

if (Request.Files != null) 
{ 
    var getmyfile = Request.Files["some_photo"]; 
    try 
    { 
     if (getmyfile.FileName != "" && getmyfile.FileName != null && getmyfile.ContentLength > 0) 
     { 
      ///Create Useruploads path. 
      var path = Server.MapPath("~/Useruploads" + "\\"); 

      ///Get file info that we gonna upload to server.. 
      FileInfo TheFile = new FileInfo(path + Path.GetFileName(getmyfile.FileName)); 
      ///Note: i used Path.GetFileName(getmyfile.FileName) code cause getmyfile.FileName gives full path of that file.. 
      if (TheFile.Exists) 
      { 
       ///Seperate file name and extention.. 
       var fname = Path.GetFileNameWithoutExtension(TheFile.Name); 
       var ext = TheFile.Extension; 
       var path2 = path + fname; 

       ///As long as we got file names, same as in server.. 
       while(new FileInfo(path2+ext).Exists) 
       { 
       ///Add "-img" to its name.. 
        path2 = path2 + "-img"; 
       } 

       FileInfo ccc = new FileInfo(path2 + ext); 
       string f_art = ccc.Name.Replace(" ", "");///Clean space.. (Optional) 

       getmyfile.SaveAs(f_art); 
       somedb.some_photo = Path.GetFileName(f_art); ///Its not fart its file art lol! 

      } 
      else ///if file is not exist in our server.. 
      { 
       var path3 = (path + Path.GetFileName(getmyfile.FileName)); 

       FileInfo ccc = new FileInfo(path3); 
       string f_art = ccc.Name.Replace(" ", ""); 

       getmyfile.SaveAs(f_art); 
       some.some_photo = Path.GetFileName(f_art); 
      } 
     } 
    } 
    catch(FileNotFoundException ex) 
    { 
    form.Set("lblStatus",ex.Message); 
    } 
    catch (Exception ex) 
    { 
    form.Set("lblStatus", ex.Message); 
    } 

    db.somedbs.InsertOnSubmit(somedb); 
    db.SubmitChanges(); 
    return RedirectToAction("Index"); 
} 

(en option) u peut également utiliser:

var f_art = System.Text.RegularExpressions.Regex.Replace(Path.GetFileNameWithoutExtension(TheFile.Name), "[^a-zA-Z]", ""); 

au lieu d'utiliser .Replacer (» », ""); mais dans ce cas, il nettoie les zones espacées et si vous utilisez le code là-haut, il nettoiera tous les caractères sauf A à Z, de A à Z, ce qui signifie qu'aucun nombre ne sera appliqué à ce nom ni aucun espace ou autre caractère entre A et Z ..

Questions connexes