之前寫的樓主沒有測試,后來發現用起來有點小問題 就修改了一下,現在已經親測可用 完全沒有問題了 下面就開始貼代碼了
首先將圖片裝換成功byte 數組
這個path是圖片的路徑 例如d:12.png;
public byte[] SaveImage(string path) { FileStream fs=new FileStream(path,FileMode.Open,FileAccess.Read); BinaryReader br=new BinaryReader(fs); byte[] imgBytes = br.ReadBytes((int) fs.Length); return imgBytes; }
然后上傳圖片流
這里要注意點 寫入請求流的strean 用完要關閉
/// <summary> /// 上傳圖片流 /// </summary> /// <param name="data"></param> private bool ImageRequest(byte[] data) { const string host = "http://www.baidu.com"; const string path = "/ImageManagerApi/GetImageByte"; string url = host + path; HttpWebResponse httpResponse = null; HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url); httpRequest.Method = "POST"; httpRequest.Headers.Add("FileSize", data.Length.ToString()); using (Stream stream = httpRequest.GetRequestStream()) { stream.Write(data, 0, data.Length); stream.Close(); } try { httpResponse = (HttpWebResponse)httpRequest.GetResponse(); } catch (WebException ex) { httpResponse = (HttpWebResponse)ex.Response; } //響應流 Stream st = httpResponse.GetResponseStream(); StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8")); string result = reader.ReadToEnd(); if ("ok".Contains(result)) return true; return false; }
服務器接收的方法
/// <summary> /// 獲取圖片流 /// 保存圖片 /// </summary> public void GetImageByte() { try { int fileSize = int.Parse(Request.Headers["FileSize"].ToString()); byte[] data = Request.BinaryRead(fileSize); DebugHelper.Info(BitConverter.ToString(data)); var path = "/Upload/LINGDAO/" + DateTime.Now.Date.ToString("yyyy-MM-dd") + "/"; var serverPath = Server.MapPath("~" + path); if (!Directory.Exists(serverPath)) { Directory.CreateDirectory(serverPath); } string fileName = Guid.NewGuid().ToString(); //圖片存儲到流中 MemoryStream ms = new MemoryStream(data); Image image = Image.FromStream(ms); image.Save(serverPath + fileName + ".png"); Response.HeaderEncoding = Encoding.UTF8; Response.Charset = "utf-8"; Response.Write("ok"); } catch (Exception e) { DebugHelper.Info(e.Message); Response.HeaderEncoding = Encoding.UTF8; Response.Charset = "utf-8"; Response.Write("error"); } }
好了 大功告成!