正在浏览stackoverflow文章Convert to Zip file,但我的问题有点不同。我没有PDF文件。在通过名为HiQPDF的第三方软件将HTML转换为PDF后,我得到了bytes数组,我希望将相同的数组转换为zip文件。我将字节数组转换为zip的代码是
private void DownloadZipFile(HttpContext aHttpContext, byte[] pdfBuffer)
{
try
{
using (var memoryStream = new MemoryStream())
{
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
archive.CreateEntry(NomineeName + ".pdf", CompressionLevel.Fastest);
}
//return the ZIP byte stream as base 64 string
memoryStream.Seek(0, SeekOrigin.Begin);
byte[] zipArchive = memoryStream.ToArray();
aHttpContext.Response.ContentType = "application/zip";
aHttpContext.Response.AddHeader("content-disposition", String.Format("{0}; filename={1}; size={2}",
"attachment", "\"" + this.NomineeName + ".zip\"", zipArchive.Length));
aHttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
aHttpContext.Response.BinaryWrite(zipArchive);
aHttpContext.Response.End();
}
}
catch (Exception exception)
{
new LogDetails { Exception = exception }.AddLog();
this.ShowErrorMessage(aHttpContext);
}
}
此代码下载了zip文件,但我知道我遗漏了某些地方,因此我无法在解压缩后打开PDF文件。
参数中的pdfBuffer是HiQPDF返回的字节数组。
感谢您的帮助。我知道我在复制这个问题,但我需要知道我错在哪里。我搜索了很多文章和博客,但我仍然找不到我的错误。
答案 0 :(得分:0)
通过一点R& D我发现我没有将数据写入zip文件中新创建的条目,因此我错过了几行代码:
using (BinaryWriter writer = new BinaryWriter(readmeEntry.Open()))
{
writer.Write(pdfBuffer);
}
在
之后添加这些代码行archive.CreateEntry(NomineeName + ".pdf", CompressionLevel.Fastest);
解决了我的问题。