zoukankan      html  css  js  c++  java
  • C# 多文件打包

    public HttpResponseMessage GetZip()
    {
    var response = Request.CreateResponse(HttpStatusCode.OK);
    try
    {

    ZipOutputStream zipOutputStream = null;
    var pdfFiles =new List<fileC>;//pdfFiles  实际存在的文件路径列表
    var tempDirPath = System.Web.Hosting.HostingEnvironment.MapPath("~/temp");

    MemoryStream ms = new MemoryStream();
    zipOutputStream = new ZipOutputStream(ms);

    if (pdfFiles.Any())
    {
    foreach (var pdfFile in pdfFiles)
    {
    var fileInfo = new FileInfo(pdfFile.path);
    ZipEntry entry = new ZipEntry(pdfFile.fileName);
    entry.DateTime = DateTime.Now;
    entry.Size = fileInfo.Length;
    zipOutputStream.PutNextEntry(entry);
    byte[] buffer = new byte[4096];
    using (var streamReader = File.OpenRead(pdfFile.path))
    {
    StreamUtils.Copy(streamReader, zipOutputStream, buffer);
    }
    zipOutputStream.CloseEntry();
    }
    }

    zipOutputStream.IsStreamOwner = false;
    zipOutputStream.Close();
    ms.Position = 0;
    //var response = Request.CreateResponse(HttpStatusCode.OK);
    response.Content = new StreamContent(new MemoryStream(ms.ToArray()));
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); //octec-stream
    response.Content.Headers.ContentLength = ms.Length;
    ContentDispositionHeaderValue contentDisposition = null;

    contentDisposition = new ContentDispositionHeaderValue("attachment")
    {
    FileName = "candidates.zip"
    };
    response.Content.Headers.ContentDisposition = contentDisposition;

    var tempDir = new DirectoryInfo(tempDirPath);
    tempDir.Delete(true);
    }
    catch (Exception ex)
    {
    //response.Content = new StringContent(ex.Message);
    logger.ErrorFormat("错误消息:{0} ,堆栈跟踪:{1}", ex.Message, ex.StackTrace);
    }
    return response;
    }

  • 相关阅读:
    【自动化学习】自动化误区
    【uwsgi】Mac下python dyld :Library not loaded 问题解决
    【Mysql】Mac版本navicat premium彻底卸载的终端命令:
    【Mysql学习】锁
    【Pytest学习】重复执行用例插件之pytestrepeat的详细使用
    【Python学习】异常传递
    【Jenkins学习】gitlab自动化触发jenkins任务
    一封程序员的情书
    UNION的使用
    为生成的新行添加默认值
  • 原文地址:https://www.cnblogs.com/jayblog/p/13329917.html
Copyright © 2011-2022 走看看