2012-02-13 55 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