传输是 MemoryStream 并没有用到io 保存才io

解决方案 »

  1.   

    用windiff或者ultraedit比较下两个文件,看哪里的问题。
      

  2.   


    System.IO.MemoryStream fs = file.InputStream; 能转?
      

  3.   

    在你的fs.Read(buffer, 0, buffer.Length);
    下面加一句:
    fs.Seek(0, SeekOrigin.Begin);试试
      

  4.   

                byte[] bytes = br.ReadBytes((Int32)fs.Length);
                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);
                fs.Seek(0, SeekOrigin.Begin);
                fs.Close();没用,出来的文件还是损坏的
      

  5.   


    额 好像唯一的区别就是 :
    .\100吧主候选人.jpg different (E:\abc\100吧主候选人.jpg is more recent)但保存出来的文件确实是损坏的:
      

  6.   

    说明文件开头就没有写对。贴出UltraEdit显示的两个文件的开头一段。
      

  7.   

    确实不一样,
    Stream fs = file.InputStream;
                BinaryReader br = new BinaryReader(fs);
                byte[] bytes = br.ReadBytes((Int32)fs.Length);
                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);
                fs.Close();
    这一步的问题?
      

  8.   

    HttpPostedFile类里的内容 没办法直接转成二进制存在byte[]中么  难道必须要先保存下来,然后filestream读取这个文件才能转成二进制?
      

  9.   


    using (Stream output = File.OpenWrite("c:\temp\file.zip"))
                        using (Stream input = file.InputStream)
                        {
                            byte[] buffer = new byte[8192];
                            int bytesRead;
                            while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
                            {
                                output.Write(buffer, 0, bytesRead);
                            }
                        }
    把上面的File.OpenWrite换成file.InputStreamhttp://stackoverflow.com/questions/12927932/file-upload-with-c-sharp-and-streaming
      

  10.   


    你去看看HttpWorkerRequest类吧,可以通过GetPreloadedEntityBody、ReadEntityBody方法在预加载阶段提前读取到客户端提交的数据,这里取出来的就是byte[],不过需要你自行从中分离出属于文件内容的部分
      

  11.   

     HttpFileCollection files = context.Request.Files;
                HttpPostedFile file = files[0];
        
            int upPhotoLength = files.ContentLength;
            byte[] PhotoArray = new Byte[upPhotoLength];
            Stream PhotoStream = files.InputStream;
            PhotoStream.Read(PhotoArray, 0, upPhotoLength);