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);
}
你先排查下有没有丢失字节,看发送的字节和就收的自己是否相等另外我也做过类似的东西,你试试
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);
}
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();
这句话好像不对...try catch 到错误:参数无效
我确定stream是有内容的.
经测试,客户端发送的图片大小5517字节,服务端收到的大小5720字节,多余的应该是HTTP协议的文件头尾这些.
如何将这些HTTP协议的文件头尾去掉,只保留中间的内容保存为图片呢?
之前接收数据方式不对.用下面的就可以了: 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);
}