2012-01-12 2 views
1

я писал:ASP.net загрузить файл, переименовать, если существует

protected void btnup_Click(object sender, EventArgs e) 
{ 
    if (ASPxUploadControl1.HasFile) 
    { 
     try 
     { 
      string filename = Path.GetFileName(ASPxUploadControl1.FileName); 
      ASPxUploadControl1.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; 
     } 
    } 
} 

Проблема в том, если у меня уже есть File1.jpg, он перепишет его, если кто-то еще дата загрузки File1.jpg.

Что здесь делать?

+0

что реальная проблема? вы можете проверить, есть ли FileExist? сначала или вы не можете подключить пользователя к файлам? – Aristos

ответ

5

Здесь вы можете сделать, чтобы имя файла было уникальным на сервере, чтобы избежать перезаписи.

if (ASPxUploadControl1.HasFile) 
{ 
    try 
    { 
     string extension = Path.GetExtension(ASPxUploadControl1.FileName); 
     string id = Guid.NewGuid().ToString(); 
     string fileLocation = string.Format("{0}/{1}{2}", 
              Server.MapPath("upload/"), 
              id, extension); 
     ASPxUploadControl1.SaveAs(fileLocation); 
     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; 
    } 
} 
3

при звонке ASPxUploadControl1.SaveAs, присвоение - это уникальное имя. например, бегущее число/GUID/MD5 хеш содержимого. что бы вы ни увидели.

Я считаю, что проще создать новую строку с помощью GUID: System.Guid.NewGuid().ToString()

1

Вы должны будете дать имя файла с unique имя.
Возможно, вам понадобится DB-последовательность или переменная статического числа.

Вы можете использовать случайную уникальную строку GUID см this MSDN статья

1

Я рекомендую вам использовать Guid при сохранении файлов в веб-приложениях, чтобы избежать этой проблемы, я обычно использую:

Guid.NewGuid().ToString().Replace("-", "").ToUpper() 

для имени файла.

0
protected void btnup_Click(object sender, EventArgs e) 
     { 
      if (ASPxUploadControl1.HasFile) 
      { 
       try 
       { 
        string ext = Path.GetExtension(ASPxUploadControl1.FileName); 
        string filename = DateTime.Now.Ticks.ToString()+ext; 
        ASPxUploadControl1.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; 
       } 
      } 
    } 
Смежные вопросы