Http请求数据上传图片到服务器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32961291/article/details/78873132

  private void InitHttp()
        {
string filePath = strPath + "\\test1.png";
                string fileName = strPath + "\\test1.png";
                pro.Tiaoma = Regex.Replace(pro.Tiaoma, "\r\n", string.Empty);
                Uri uri = new Uri("http://153.37.217.112:60003/stock/interface/saveInfo.do?code=" "");
                HttpWebRequest req = HttpWebRequest.CreateHttp(uri);
                req.Method = "POST";
                if (isClick == true)
                {
                    var boundary = "---------------" + DateTime.Now.Ticks.ToString("x");
                    var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n");
                    var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);


                    // 最后的结束符  
                    var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n");


                    // 文件参数头  
                    const string filePartHeader =
                        "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" +
                         "Content-Type: application/octet-stream\r\n\r\n";
                    var fileHeader = string.Format(filePartHeader, "files", fileName);
                    var fileHeaderBytes = Encoding.UTF8.GetBytes(fileHeader);


                    // 开始拼数据  
                    var memStream = new MemoryStream();
                    memStream.Write(beginBoundary, 0, beginBoundary.Length);


                    // 文件数据  
                    memStream.Write(fileHeaderBytes, 0, fileHeaderBytes.Length);
                    var buffer = new byte[1024];
                    int bytesRead; // =0  
                    while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        memStream.Write(buffer, 0, bytesRead);
                    }
                    fileStream.Close();


                    // Key-Value数据  
                    var stringKeyHeader = "\r\n--" + boundary +
                                           "\r\nContent-Disposition: form-data; name=\"{0}\"" +
                                           "\r\n\r\n{1}\r\n";


                    Dictionary<string, string> stringDict = new Dictionary<string, string>();
                    stringDict.Add("len", "500");
                    stringDict.Add("wid", "300");
                    foreach (byte[] formitembytes in from string key in stringDict.Keys
                                                     select string.Format(stringKeyHeader, key, stringDict[key])
                                                         into formitem
                                                     select Encoding.UTF8.GetBytes(formitem))
                    {
                        memStream.Write(formitembytes, 0, formitembytes.Length);
                    }


                    // 写入最后的结束边界符  
                    memStream.Write(endBoundary, 0, endBoundary.Length);


                    //倒腾到tempBuffer?  
                    memStream.Position = 0;
                    var tempBuffer = new byte[memStream.Length];
                    memStream.Read(tempBuffer, 0, tempBuffer.Length);
                    memStream.Close();


                    req.Timeout = 100000;
                    req.ContentType = "multipart/form-data;boundary=" + boundary;
                    req.ContentLength = tempBuffer.Length;
                    var requestStream = req.GetRequestStream();
                    requestStream.Write(tempBuffer, 0, tempBuffer.Length);
                    requestStream.Close();
                }
                WebResponse resp = req.GetResponse();
                StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.Default);
                string sReturn = sr.ReadToEnd().Trim()

        }

猜你喜欢

转载自blog.csdn.net/qq_32961291/article/details/78873132
今日推荐