通過HtppWebRequest發送圖片到服務器並保存


之前寫的樓主沒有測試,后來發現用起來有點小問題 就修改了一下,現在已經親測可用 完全沒有問題了  下面就開始貼代碼了

 

首先將圖片裝換成功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");
            }
        }

好了 大功告成! 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM