-1

私はzipファイルのみをアップロードするRadUploadを持っているので、抽出プロセス中に各ファイルの名前を変更したいので、方法を試しました:

Protected Sub Upload(sender As Object, e As EventArgs)

    Dim extractPath As String = Server.MapPath("~/temp/")
    Dim file1 As String = RadUpload1.UploadedFiles(0).FileName

    ExtractFileToDirectory(file1, extractPath)

End Sub

Public Sub ExtractFileToDirectory(zipFileName As String, outputDirectory As String)

    Dim zip As ZipFile = ZipFile.Read(outputDirectory & zipFileName)
    Directory.CreateDirectory(outputDirectory)
    For Each e As ZipEntry In zip

        Dim NewName As String = Now().ToString("ddMMyyhhmmss")
        Dim newext As String = ".jpg"
        e.FileName = NewName + newext

        e.Extract(outputDirectory, ExtractExistingFileAction.OverwriteSilently)
    Next
End Sub

最初は最初のファイルの名前を変更して抽出しますが、次のエラーが発生します。

[ 調整されました グループ: 国勢調査プロセスを実行できませんでした。]

何か案が?

4

2 に答える 2

0

「一時」フォルダーに抽出することを想定しているため、実際にはシステムの一時フォルダーを使用する必要があります。Web アプリ内にデータを書き込むことは、悪い習慣です。

以下を使用して、システム定義の一時フォルダーを取得します

Private Sub Upload(sender As Object, e As EventArgs)

Dim extractPath As String = System.IO.Path.GetTempPath() ' Better way to store temporary files
Dim file1 As String = RadUpload1.UploadedFiles(0).FileName

ExtractFileToDirectory(file1, extractPath)

End Sub

次に、ExtractFileToDirectory 関数内で新しい一時フォルダーを作成し ( Guid.NewGuid() .ToString() を使用して一意のフォルダー名を生成します)、ExtractToFileメソッドを使用して、@ 2316116 で説明されているようにファイルを解凍します。

このアプローチに従うことで、複数の zip ファイルを同時に解凍するときに発生する厄介なエラーを回避できます。

于 2017-01-09T15:22:30.233 に答える