lz
你先排查下有没有丢失字节,看发送的字节和就收的自己是否相等另外我也做过类似的东西,你试试
    public string ReturnPhoto(byte[] streamByte, int uid)
    {
        StringBuilder jsonString = new StringBuilder();
        string fileName = Guid.NewGuid().ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();
        System.IO.MemoryStream ms = new System.IO.MemoryStream(streamByte);
        System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
        img.Save(Server.MapPath("/uploads/face/" + fileName + ".png"), System.Drawing.Imaging.ImageFormat.Png);
    }

解决方案 »

  1.   

     //二进制流转成图片  
             MemoryStream  stream = new MemoryStream(byteImage);    // byteImage就是接收到的二进制数组  
                  Image bitmapnew = ((Image)new Bitmap(stream));  
      tring folder = System.Web.HttpContext.Current.Server.MapPath("~/log/");
            string filename = folder + DateTime.Now.ToString("mmssfff") + ".jpg"; 
                  bitmapnew.Save(folder+filename, ImageFormat.Jpeg);  
       stream.Close();
      

  2.   

    System.Drawing.Image bmp = ((System.Drawing.Image)new Bitmap(stream)); 
    这句话好像不对...try catch 到错误:参数无效
    我确定stream是有内容的.
      

  3.   

    没有高人回复了?
    经测试,客户端发送的图片大小5517字节,服务端收到的大小5720字节,多余的应该是HTTP协议的文件头尾这些.
    如何将这些HTTP协议的文件头尾去掉,只保留中间的内容保存为图片呢?
      

  4.   

    自己解决了.
    之前接收数据方式不对.用下面的就可以了:        int count = Request.Files.Count;
            for (int i = 0; i < count; i++)
            {
                string folder = System.Web.HttpContext.Current.Server.MapPath("~/log/");
                string filename = folder + count.ToString() + "_" + DateTime.Now.ToString("mmssfff") + ".jpg";
                Request.Files[i].SaveAs(filename);
            }