byte[]数组转ZIP压缩包

.Net技术 码拜 8年前 (2015-11-26) 1831次浏览
现在要从手机上面接收到数据流 byte[]  ,怎么在后台转成ZIP 压缩包?请案列和指导。
解决方案:10分
找zip控件
解决方案:10分
假如你的流原本就是zip包 直接保存流啊
解决方案:10分
解决方案:10分
你还是没懂,假如你的app传给你的流本身就是zip包的流,https://msdn.microsoft.com/zh-cn/library/system.io.filestream.aspx
假如不是,你还不能把他保存成zip,否则你解开是啥
解决方案:10分
ZIP 压缩包是物理存在的东西,数据流是内存中的东西,你要转成zip,首先得将流转成文件格式才行啊,不然zip怎么知道该按什么方式压缩
解决方案:10分
你应该和开发app的开发人员确认 流的具体格式 而不是你想转成zip,假如他传给你的是txt 你转成zip是没有意义的
解决方案:20分
        /// <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[]


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明byte[]数组转ZIP压缩包
喜欢 (0)
[1034331897@qq.com]
分享 (0)