14

3 つのファイルを 1 つの zip ファイルに結合し、ユーザーがダウンロードできるようにする必要があります。ファイルをサブフォルダーに圧縮するという1つのことを除いて、要件を達成できます。

たとえば、私のファイルは次のように配置されています。

C:\TTCG\WebSites\Health\ABC.CSV
C:\TTCG\WebSites\Health\XYZ.CSV
C:\TTCG\WebSites\Health\123.CSV

ただし、zip ファイルでは、「TTCG\WebSites\Health\」をパスとして使用してフォルダー内のファイルを圧縮します。添付ファイルをご覧ください。

例

パスにフォルダーを入れたくありません。フォルダなしでzipファイルに3つのファイルが必要です。どうすればそれを達成できますか?

zip ファイルを生成するための私のコードは次のとおりです。

ZipFile z = ZipFile.Create(Server.MapPath("~" + @"\Accident.zip"));

//initialize the file so that it can accept updates
z.BeginUpdate();

//add the file to the zip file        
z.Add(Server.MapPath("~" + @"\ABC.csv"));
z.Add(Server.MapPath("~" + @"\XYZ.csv"));
z.Add(Server.MapPath("~" + @"\123.csv"));        

//commit the update once we are done
z.CommitUpdate();
//close the file
z.Close();
4

3 に答える 3

11

FAQ に基づいて、フォルダー パスを手動で削除する必要があります。

フォルダーなしで Zip ファイルを作成するにはどうすればよいですか?

ZipOutputStream に追加する前に、ZipEntry の作成に使用されたファイル名のパス部分を削除します。

ZipEntry entry = new ZipEntry(Path.GetFileName(fullPath));

よくある質問はこちらからご覧いただけます

ライブラリの制限のようです。お役に立てれば!

于 2012-01-17T11:41:29.560 に答える
3

ファイルが FileSystemInfo にある場合は、次を使用できます。 z.Add(file.FullName, Path.GetFileName(file.FullName));

これにより、zip のルート ディレクトリにファイルが追加されます。

于 2013-08-26T16:22:35.493 に答える
2
z.Add(pathToFile, pathInZipFile);
于 2013-05-06T19:09:13.050 に答える