ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#使用SharpZipLib解压多文件的zip压缩文件数据流,保存到本地

2019-11-21 16:03:39  阅读:388  来源: 互联网

标签:zip C# uploadDir 压缩文件 item var new size theEntry


代码:

public async Task<ReturnModel<List<string>>> UploadModel()
        {
            var task = new Task<ReturnModel<List<string>>>(() =>
            {
                var rData = new ReturnModel<List<string>>() { code=101};
                var uploadDir = HttpContext.Current.Server.MapPath("/Content/Resource/ObjModel/");
                var newFileName = "";
                var sp = new MultipartMemoryStreamProvider();
                Task.Run(async () => await Request.Content.ReadAsMultipartAsync(sp)).Wait();
                foreach (var item in sp.Contents)
                {
                    if (item.Headers.ContentDisposition.FileName != null)
                    {
                        var filename = item.Headers.ContentDisposition.FileName.Replace("\"", "");
                        newFileName = uploadDir + "\\" + filename;
                        var fStream = item.ReadAsStreamAsync().Result;//File.OpenRead(zipFilePath)打开本地压缩文件解压
                        using (var s = new ZipInputStream(fStream))
                        {
                            ZipEntry theEntry;
                            while ((theEntry = s.GetNextEntry()) != null)
                            {
                                string directoryName = Path.GetDirectoryName(theEntry.Name);
                                string fileName = Path.GetFileName(theEntry.Name);
                                if (!string.IsNullOrEmpty(directoryName))
                                {
                                    Directory.CreateDirectory(uploadDir + directoryName);
                                }
                                
                                if (fileName != String.Empty)
                                {
                                    using (System.IO.FileStream streamWriter = File.Create(uploadDir + theEntry.Name))
                                    {

                                        int size;
                                        byte[] data = new byte[2048];
                                        while (true)
                                        {
                                            size = s.Read(data, 0, data.Length);
                                            if (size > 0)
                                            {
                                                streamWriter.Write(data, 0, size);
                                            }
                                            else
                                            {
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                return rData;
            });
            task.Start();
            return await task.ContinueWith(t => t.Result);
        }

 

标签:zip,C#,uploadDir,压缩文件,item,var,new,size,theEntry
来源: https://www.cnblogs.com/xiaojitui/p/11906161.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有