byte[]数组转ZIP压缩包

lp_cd 2015-05-04 10:08:06
现在要从手机上面接收到数据流 byte[] ,怎么在后台转成ZIP 压缩包?请案列和指导。
...全文
1824 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
dushuai0412 2015-12-23
  • 打赏
  • 举报
回复
用这个ZipArchive 能直接解压缩。.NET4.5版本提供的,修复.NET2.0遗留Zip格式解压幻数问题
tanta 2015-05-21
  • 打赏
  • 举报
回复
SharpZip
  • 打赏
  • 举报
回复
ZIP 压缩包是物理存在的东西,数据流是内存中的东西,你要转成zip,首先得将流转成文件格式才行啊,不然zip怎么知道该按什么方式压缩
lp_cd 2015-05-04
  • 打赏
  • 举报
回复
引用 7 楼 rayyu1989 的回复:
你还是没懂,如果你的app传给你的流本身就是zip包的流,https://msdn.microsoft.com/zh-cn/library/system.io.filestream.aspx 如果不是,你还不能把他保存成zip,否则你解开是啥
怎么把流变成ZIP呢? 求解!
rayyu1989 2015-05-04
  • 打赏
  • 举报
回复
你还是没懂,如果你的app传给你的流本身就是zip包的流,https://msdn.microsoft.com/zh-cn/library/system.io.filestream.aspx 如果不是,你还不能把他保存成zip,否则你解开是啥
lp_cd 2015-05-04
  • 打赏
  • 举报
回复
引用 5 楼 guwei4037 的回复:
试试这个:http://blog.csdn.net/chinacsharper/article/details/16807095
试过不行,数据流转ZIP 貌似不行,那个类不提供这个函数。只能是文件然后再压缩。谢谢了!
全栈极简 2015-05-04
  • 打赏
  • 举报
回复
lp_cd 2015-05-04
  • 打赏
  • 举报
回复
引用 3 楼 rayyu1989 的回复:
如果你的流原本就是zip包 直接保存流啊
原本的流就是由APP端传来的流, 我现在是想把流转成ZIP包,然后保存到公用的地址。 现在就是不知道怎么把 流变成ZIP包。
rayyu1989 2015-05-04
  • 打赏
  • 举报
回复
如果你的流原本就是zip包 直接保存流啊
lp_cd 2015-05-04
  • 打赏
  • 举报
回复
引用 1 楼 tanta 的回复:
找zip控件
什么控件?求指导!
tanta 2015-05-04
  • 打赏
  • 举报
回复
找zip控件
wjq 2015-05-04
  • 打赏
  • 举报
回复
        /// <summary>
        /// 使用zip方式压缩数据流
        /// </summary>
        /// <param name="filename">将数据流保存到zip包中使用的文件名</param>
        /// <param name="filecontent">数据内容</param>
        /// <returns>压缩后的zip数据</returns>
        public static byte[] Zip(string filename, byte[] filecontent)
        {
            byte[] b = new byte[] { };
            if (filecontent == null || filecontent.Length == 0)
                return b;
            //Crc32 crc = new Crc32();
            MemoryStream ms = new MemoryStream();
            ZipOutputStream zipOS = new ZipOutputStream(ms);
            zipOS.SetLevel(6);
            ZipEntry entry = new ZipEntry(filename);
            entry.DateTime = DateTime.Now;
            entry.Size = filecontent.Length;
            //crc.Reset();
            //crc.Update(filecontent);
            //entry.Crc = crc.Value;
            zipOS.PutNextEntry(entry);
            zipOS.Write(filecontent, 0, filecontent.Length);
            if (zipOS != null)
            {
                zipOS.Finish();
                b = ms.ToArray();
                zipOS.Close();
                ms.Close();
            }
            return b;
        }


假设你用SharpZip组件来做zip压缩。传入的是文件内容的byte[],以及在压缩包中显示的文件名,返回的是一个zip压缩包的byte[]
rayyu1989 2015-05-04
  • 打赏
  • 举报
回复
你应该和开发app的开发人员确认 流的具体格式 而不是你想转成zip,如果他传给你的是txt 你转成zip是没有意义的

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧