C#模拟form表单提交数据,上传文件

一般的form数据提交

            //一般form的数据提交
			//数据的格式
            string postData = "abc=这里我该怎么写呢&rd=" + DateTime.Now.Ticks;
            byte[] postD = Encoding.UTF8.GetBytes(postData);
            string slt = "";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://wechat.tsingming.test/bind/GetImage");
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            //以下注释可有可无
            //request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
            //request.KeepAlive = true;
            //request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36";
            
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(postD, 0, postD.Length);
            requestStream.Close();

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            slt = sr.ReadToEnd();
            return Content(slt);
			
			/**************************************************************/
			//接收的方法
			string abc = Request["abc"];
			

提交文件的form表单

                HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create("http://localhost:8080/upload.aspx");
                webReq.Method = "POST";
                //webReq.ContentType = "application/x-www-form-urlencoded";
                webReq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
                webReq.KeepAlive = true;
                webReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36";
                
                string boundary = "----" + DateTime.Now.Ticks.ToString("x");
                string formdataTemplate = "--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: application/octet-stream\r\n\r\n";
                string dataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
                var formdata = string.Format(formdataTemplate, "Filedata", name /*Path.GetFileName(fileName)*/);

                webReq.ContentType = string.Format("multipart/form-data; boundary={0}", boundary);
                //文件头
                var formdataByte = Encoding.ASCII.GetBytes(formdata);
                //尾
                var footer = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");

                Stream requestStream = webReq.GetRequestStream();
                requestStream.Write(formdataByte, 0, formdataByte.Length);//写入 文件头
                requestStream.Write(streamByte, 0, streamByte.Length);//写入 文件

                var dataByte1 = Encoding.ASCII.GetBytes(string.Format(dataTemplate, "type", "memberHead"));
                requestStream.Write(dataByte1, 0, dataByte1.Length);//写入 参数1
                var dataByte2 = Encoding.ASCII.GetBytes(string.Format(dataTemplate, "tid", 48650));
                requestStream.Write(dataByte2, 0, dataByte2.Length);//写入 参数2
                var dataByte3 = Encoding.ASCII.GetBytes(string.Format(dataTemplate, "uid", 48650));
                requestStream.Write(dataByte3, 0, dataByte3.Length);//写入 参数3
                var dataByte4 = Encoding.ASCII.GetBytes(string.Format(dataTemplate, "Filename", name));
                requestStream.Write(dataByte4, 0, dataByte4.Length);//写入 参数4
                var dataByte5 = Encoding.ASCII.GetBytes(string.Format(dataTemplate, "Upload", "Submit Query"));
                requestStream.Write(dataByte5, 0, dataByte5.Length);//写入 参数5


                requestStream.Write(footer, 0, footer.Length);//写入 尾

                requestStream.Close(); 

                
                HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                slt.Message = sr.ReadToEnd();
                sr.Close();
                response.Close();

获得传送的文件

HttpPostedFileBase jpeg_image_upload = Request.Files["Filedata"];


注意:文件提交的表单格式(既:Request Payload)

Content-Type:multipart/form-data; boundary=----------cH2cH2GI3KM7gL6ae0GI3ae0gL6gL6

Request Payload
------------cH2cH2GI3KM7gL6ae0GI3ae0gL6gL6
Content-Disposition: form-data; name="Filename"

Chrysanthemum.jpg
------------cH2cH2GI3KM7gL6ae0GI3ae0gL6gL6
Content-Disposition: form-data; name="uid"

48650
------------cH2cH2GI3KM7gL6ae0GI3ae0gL6gL6
Content-Disposition: form-data; name="type"

memberHead
------------cH2cH2GI3KM7gL6ae0GI3ae0gL6gL6
Content-Disposition: form-data; name="Filedata"; filename="Chrysanthemum.jpg"
Content-Type: application/octet-stream


------------cH2cH2GI3KM7gL6ae0GI3ae0gL6gL6
Content-Disposition: form-data; name="Upload"

Submit Query
------------cH2cH2GI3KM7gL6ae0GI3ae0gL6gL6--

数据格式很重。。。。






  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值