您的位置:首页 > 编程语言 > C#

C#后台代码 Post 提交表单上传文件及其他信息

2017-03-15 17:16 639 查看

后台模拟表单上传图片及内容信息

           ///开始调用
   //定义访问地址
           string URL =
"http://192.168.1.220:9001/verify/face/search";
           //定义上传图片绝对路径
            string Path = @"D\\test_Head.jpg";
 
            NameValueCollection
 myCol = new NameValueCollection();
           myCol.Add("dbName",dbName);
           myCol.Add("topNum",topNum);
           myCol.Add("score",score);
           string  json = HttpUploadFile(URL,Path,
"imageData", "image/jpeg", myCol);
 
     
        ///<summary>
        ///
        ///</summary>
        ///<param name="url">访¤?问¨º地Ì?址¡¤</param>
        ///<paramname="file">文?件t绝?对?路¡¤径?</param>
        ///<paramname="paramName">文?件t参?数ºy名?</param>
        ///<paramname="contentType">文?件t类¤¨¤型¨ª</param>
        ///<paramname="nvc">其?它¨¹文?本À?内¨²容¨Y</param>
        ///<returns></returns>
        public
string HttpUploadFile(stringurl,
string file, stringparamName,
string contentType,                             
NameValueCollection nvc)
        {
            //log.Debug(string.Format("Uploading{0} to {1}", file, url));
            stringboundary =
"---------------------------"+ DateTime.Now.Ticks.ToString("x");
            byte[]boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary +
"\r\n");
 
            HttpWebRequestwr = (HttpWebRequest)WebRequest.Create(url);
            wr.ContentType = "multipart/form-data; boundary=" +boundary;
            wr.Method = "POST";
            wr.KeepAlive = true;
            wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
 
            Streamrs = wr.GetRequestStream();
 
            stringformdataTemplate =
"Content-Disposition:form-data; name=\"{0}\"\r\n\r\n{1}";
            foreach(string key
innvc.Keys)
            {
                rs.Write(boundarybytes, 0,boundarybytes.Length);
                stringformitem =
string.Format(formdataTemplate, key,nvc[key]);
                byte[]formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
                rs.Write(formitembytes, 0,formitembytes.Length);
            }
            rs.Write(boundarybytes, 0,boundarybytes.Length);
 
            stringheaderTemplate =
"Content-Disposition:form-data; name=\"{0}\";                                       filename=\"{1}\"\r\nContent-Type:{2}\r\n\r\n";
            stringheader =
string.Format(headerTemplate, paramName,file, contentType);
            byte[]headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
            rs.Write(headerbytes, 0,headerbytes.Length);
 
            FileStreamfileStream =
new FileStream(file,FileMode.Open,
FileAccess.Read);
            byte[]buffer =
new byte[4096];
            intbytesRead = 0;
            while((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
            {
                rs.Write(buffer, 0, bytesRead);
            }
            fileStream.Close();
 
            byte[]trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary +
"--\r\n");
            rs.Write(trailer, 0,trailer.Length);
            rs.Close();
 
            HttpWebResponseresponse;
 
            try
            {
                response = (HttpWebResponse)wr.GetResponse();
            }
            catch(WebException ex)
            {
                response = (HttpWebResponse)ex.Response;
            }
            using(Stream responseStream =response.GetResponseStream())
            {
                using(StreamReader myStreamReader =
new StreamReader(responseStream,  
Encoding.UTF8))
                {
                    stringretString = myStreamReader.ReadToEnd();
                    returnretString;
                }
            }
        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: