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 に答える