如何上传重复名称的Excel

时间:2012-02-13 09:23:39

标签: asp.net vb.net upload server.mappath

如何上传带有重复名称文件的excel文件,但不会覆盖以前的名称文件。 因此,如果我上传具有相同名称的文件,它将像Windows一样保存。

离。首先我上传excel file =“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

之前感谢

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

请勿以与用户提供的名称相同的名称保存上传的文件。您将获得许多用户上传重复的名称。为每个上载的文件生成一个新名称,并将原始名称保留在数据库中,并在数据库中保留指向生成的文件的指针。如果请求了文件,请在数据库中进行查找以查找原始文件。

答案 2 :(得分:0)

使用File.Exist或使用linq获取文件计数并更改fileName以反映新名称。

答案 3 :(得分: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,这将抽出可能存在的文件的名称)。