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();
FAQに基づいて、フォルダパスを手動で削除する必要があります。
フォルダなしでZipファイルを作成するにはどうすればよいですか?
ZipOutputStreamに追加する前に、ZipEntryの作成に使用したファイル名のパス部分を削除します
ZipEntry entry = new ZipEntry(Path.GetFileName(fullPath));
FAQは ここ で見つけることができます。
ライブラリの制限のようです。お役に立てれば!
FileSystemInfoにファイルがある場合は、次を使用できます。z.Add(file.FullName, Path.GetFileName(file.FullName));
これにより、Zipのルートディレクトリにファイルが追加されます。
z.Add(pathToFile, pathInZipFile);