我现在要实现将一个文件压缩成二进制流 并存入数据库的image字段 这样就会用到byte数组  但byte[]要用就要先定义其大小 进行初始化 我不知道压缩后大小是多少  定义太大又害怕实现不了压缩的目的 太小也不行 求高人能帮忙解决一下这个问题。

解决方案 »

  1.   

    参考FortuneBase/FortuneDomain/CompressData.cs参考地址www.cnblogs.com/mail-ricklee
      

  2.   

    我找了好久 都没找到 你说的CompressData.cs在哪 能给我发一份吗? 邮箱:[email protected]
    万分感谢!
      

  3.   


    FortuneWeb/FortuneDomain/Common/Compress/CompressData.cs
      

  4.   

    挺奇怪操作流怎么会涉及到数组大小的问题,比如下面这个压缩批量文件的例子try
                    {
                        using (ZipOutputStream s = new ZipOutputStream(File.Create(Path)))
                        {
                            s.SetLevel(9); // 0 - store only to 9 - means best compression                        byte[] buffer = new byte[4096];                        string fp = fWorkPath + "\\";
                            foreach (string file in filenames)
                            {
                                if (file.IndexOf(fp) != 0 || file.Length < fp.Length) continue;
                                string filename = file.Substring(fp.Length, file.Length - fp.Length);
                                ZipEntry entry = new ZipEntry(filename);
                                entry.DateTime = DateTime.Now;
                                s.PutNextEntry(entry);
                                using (FileStream fs = File.OpenRead(file))
                                {
                                    int sourceBytes;
                                    do
                                    {
                                        sourceBytes = fs.Read(buffer, 0, buffer.Length);
                                        s.Write(buffer, 0, sourceBytes);
                                    } while (sourceBytes > 0);
                                }
                            }
                            s.Finish();
                            s.Close();
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);  
                    }
      

  5.   


    一般在无法知道待压缩文件大小的时候,采用我们自己设定的一个byte数据,一段一段的传输。
      

  6.   

    这里有涉及到传输的概念吗?存入数据库而已,直接流对象调用ToArray()方法即可获得数组,根本不需要自己设定Byte数组的。