2012-02-13 48 views
0

如何上傳帶有重複名稱文件的excel文件,但是它不會覆蓋以前的名稱文件。 所以,如果我上傳的文件具有相同的名稱,它會像Windows一樣保存。如何上傳帶有重複名稱的excel

ex。首先我上傳excel文件=「fileExcel」。然後我再次上傳相同的名稱=「fileExcel」。它應該是上傳文件夾中的2個文件,首先是名稱「fileExcel」和「fileExcel(1)」。

所以如果我反覆上傳文件的同名文件,它會不斷增長。 (1),(2),(3),(4)等

這裏是我的代碼:

Dim fileName As String = Path.GetFileName(FileUpload1.PostedFile.FileName) 
     Dim fileExtension As String = Path.GetExtension(FileUpload1.PostedFile.FileName) 
     Dim fileLocation As String = Server.MapPath("~/Upload/" & fileName) 
     FileUpload1.SaveAs(fileLocation) 
If fileExtension = ".xls" Then 
      connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fileLocation & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=2""" 
     ElseIf fileExtension = ".xlsx" Then 
      connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fileLocation & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=2""" 
     End If 

感謝之前

回答

2

你可以使用一個File.Exists和計數器變量:

Dim fileExtension = IO.Path.GetExtension(fileLocation) 
Dim fileName = IO.Path.GetFileNameWithoutExtension(fileLocation) 
Dim folder = IO.Path.GetDirectoryName(fileLocation) 
Dim counter = 0 
While IO.File.Exists(fileLocation) 
    counter += 1 
    Dim newFileName = String.Format("{0}({1}){2}", fileName, counter, fileExtension) 
    fileLocation = IO.Path.Combine(folder, newFileName) 
End While 
+0

感謝蒂姆...你的代碼正在對我... – tyo 2012-02-15 06:42:53

1

不要上傳的文件保存在相同的名稱如用戶所提供的。您將獲得許多用戶上傳重複名稱。爲每個上傳的文件生成一個新名稱,並將原始名稱保存在數據庫中,並在數據庫中保留一個指向生成文件的指針。如果請求文件,請在數據庫中查找以查找原始文件。

0

使用File.Exist或使用linq獲取文件數並將fileName更改爲反映新名稱。

0

下面的代碼應該這樣做。

public string CalculateNextFileName(string filename, string dir) 
{ 
    var file = Path.GetFileNameWithoutExtension(filename); 
    var files = new DirectoryInfo(@"M:\testdir").GetFiles(file + "*"); 
    return string.Format("{0} ({1})",file, files.Count()); 
} 

用法:

var newFileName = "New Text Document.txt"; 

var nextFileName = CalculateNextFileName(newFileName, "C:\testdir"); 

這是一個非常幼稚的實現,並不需要序列中帳戶丟失的文件(即,如果文件2和3人失蹤,這將泵取出可能存在的文件的名稱)。

+0

不知道我怎麼錯過了蒂姆的答案。他更好! – hermiod 2012-02-13 21:08:17