0

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

前任。首先我上传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

谢谢之前

4

4 回答 4

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
于 2012-02-13T09:36:48.217 回答
1

不要以用户提供的相同名称保存上传的文件。你会得到很多用户上传重复的名字。为每个上传的文件生成一个新名称,并将原始名称保存在数据库中,并在数据库中保存指向生成文件的指针。如果请求文件,请在数据库中查找原始文件。

于 2012-02-13T09:29:26.117 回答
0

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

于 2012-02-13T09:32:31.977 回答
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 丢失,这将抽出可能存在的文件的名称)。

于 2012-02-13T21:07:28.707 回答