HttpWebRequest 上传图片

 public string HttpUploadFile()
        {
            string url = "http://localhost:50380/WebForm1.aspx";
            string filepath = "C:\\Users\\lei2.wang\\Desktop\\Capture.PNG";
            string fileformname = "Capture.PNG";
            string poststr = "";
            // 这个可以是改变的,也可以是下面这个固定的字符串
            string boundary = "------WebKitFormBoundarylAiKcuBRGd1pRVJI";

            // 创建request对象
            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url);
            webrequest.ContentType = " multipart/form-data; boundary=----WebKitFormBoundarylAiKcuBRGd1pRVJI";
            webrequest.Method = "POST";
            webrequest.Headers.Add("Cookie: SGSRev_Order_ReportUser=billy-wp_li; SGSBlackClientListUser=seven_jiang; SGSCNComplaintCaseUser=Jiang_Seven; CtsisUserCode=apac\\Seven_Jiang; CNZZDATA1996164=cnzz_eid%3D798484094-1479962914-http%253A%252F%252Flocalhost%253A35708%252F%26ntime%3D1479974059 ");
            webrequest.Referer = "http://localhost:50380/WebForm1.aspx";

            //webrequest.Proxy = new WebProxy("127.0.0.1", 8888); // new WebProxy("127.0.0.1", "8888");//:8888

            // 构造发送数据
            StringBuilder sb = new StringBuilder();

            // 文本域的数据,将user=eking&pass=123456  格式的文本域拆分 ,然后构造 

            sb.Append("\r\n");
            sb.Append("\r\n");
            sb.Append("------WebKitFormBoundarylAiKcuBRGd1pRVJI");
            sb.Append("\r\n");
            sb.Append("Content-Disposition: form-data; name=\"__VIEWSTATE\"");
            sb.Append("\r\n");
            sb.Append("\r\n");
            sb.Append("revyQ+TvGvOWCVIQshKUEnHeGf0ftCH92iHWuRYVAct4lnXANDjVJUFuMPHDleYjIQfcrEsDhwzGYtRqw+fVLeUPs6OhI7/w2gubieoS4RQ=");
            sb.Append("\r\n");

            // 文件域的数据
            sb.Append("------WebKitFormBoundarylAiKcuBRGd1pRVJI");
            sb.Append("\r\n");
            sb.Append("Content-Disposition: form-data; name=\"aaab\"; filename=\"" + fileformname + "\"");
            sb.Append("\r\n");
            sb.Append("Content-Type: image/jpeg");
            sb.Append("\r\n");
            sb.Append("\r\n");

            string postHeader = sb.ToString();
            byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader);

            //构造尾部数据
            StringBuilder sb1 = new StringBuilder();
            sb1.Append("------WebKitFormBoundarylAiKcuBRGd1pRVJI");
            sb1.Append("\r\n");
            sb1.Append("Content-Disposition: form-data; name=\"__VIEWSTATEGENERATOR\"");
            sb1.Append("\r\n");
            sb1.Append("\r\n");
            sb1.Append("C687F31A");
            sb1.Append("\r\n");
            sb1.Append("------WebKitFormBoundarylAiKcuBRGd1pRVJI--");
            sb1.Append("\r\n");
            sb1.Append("\r\n");
            byte[] boundaryBytes = Encoding.ASCII.GetBytes(sb1.ToString());
            var cc = sb1.ToString();

            FileStream fileStream = new FileStream(filepath, FileMode.Open, FileAccess.Read);
            long length = postHeaderBytes.Length + fileStream.Length + boundaryBytes.Length;
            webrequest.ContentLength = length;

            Stream requestStream = webrequest.GetRequestStream();

            // 输入头部数据
            requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);

            // 输入文件流数据
            byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)fileStream.Length))];
            int bytesRead = 0;
            while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                requestStream.Write(buffer, 0, bytesRead);

            // 输入尾部数据
            requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);
            WebResponse responce = webrequest.GetResponse();
            Stream s = responce.GetResponseStream();
            StreamReader sr = new StreamReader(s);

            // 返回数据流(源码)
            return sr.ReadToEnd();
        }

  

 protected void Page_Load(object sender, EventArgs e)
        {
             var aa=   Request.Files[0];
                HttpFileCollection hfc = HttpContext.Current.Request.Files;  //获取文件,保存图片
                HttpPostedFile hpf = hfc[0];
                int extIndex = hpf.FileName.LastIndexOf(‘.‘);
                string ext = hpf.FileName.Substring(extIndex);
                string fileName = Guid.NewGuid().ToString();
                string dir = HttpContext.Current.Server.MapPath("photos/buildings/");
                hpf.SaveAs(dir + fileName + ext);
        }

  

时间: 2024-11-05 21:46:20

HttpWebRequest 上传图片的相关文章

【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端

原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传文件请求报文内容封装 3.asp.net(c#)使用HttpWebRequest携带请求参数模拟上传文件封装源码下载 一.Http协议上传文件(以图片为例)请求报文体内容格式 首先,我们来看下通过浏览器上传文件的请求报文内容格式,这里以本人自己写的实例为例,如下图.除了能上传图片(即:头像字段),还

微信上传图片

低版本的安卓上传图片是个问题,能出现选择图片,但点击图片后没有反应,转成base64也无解.于是改为用微信的接口上传.和之前的微信分享功能都是基于微信的jssdk. 步骤比我们平时上传到服务器多一步,他是先调用chooseeImage方法获得用户要上传的图片id.然后上传到微信的服务器,微信的服务器默认只保存三天,所以还要让后台下载到自己的服务器上,然后返回地址,前端显示,这样才算完成. var time = '@ViewBag.Share.timestamp'; wx.config({ deb

C# 模拟上传图片

上传图片的格式一定要按规定的写,不然没办法正确上传的. 我在上传的时候就是值前面没有空一行,导致上传不成功,很纠结的错误. 我要模拟的是一个FLASH的上传控件,我开始用HttpAnalyze抓包是抓不到的.后来上网搜索到了[抓包工具]Charles v3.6.4,下载安装后,可以抓到FLASH上传时候的包了. FLASH上传应该也是POST,可能不是HTTP包,但应该可以按HTTP的方式发送吧.结果证明我的想法是对的,可以正常上传. FLASH上传与普通的按钮上传控件有什么区别呢?有待搜索到相

利用HttpWebRequest实现实体对象的上传

一 简介 HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.它们支持一系列有用的属性.这两个类位 于System.Net命名空间,默认情况下这个类对于控制台程序来说是可访问的.请注意,HttpWebRequest对象不是利用new关键字通过构 造函数来创建的,而是利用工厂机制(factory mechanism)通过Create()方法来创建的.另外,你可能预计需要显式地调用一个“Send”方法,实际上不需要.接下来调用 HttpWebRequ

POST 方式上传图片

Post 方式 模仿 form表单 上传 图片 设置enctype = multipart/form-data <form enctype="multipart/form-data"></form>   自定义 MultipartFormData 类  (4.5以上版本好像有这个类  类名称叫啥忘记了) /// <summary> /// multipart/form-data 数据类型 /// </summary> public cla

UEditor上传图片到七牛C#(后端实现)

由于个人网站空间存储有所以选择将图片统一存储到七牛上,理由很简单 1  免费10G 的容量  ,对个人网站足够用 2  规范的开发者文档 和完善的sdk(几乎所有热门语言sdk) 整体思路 图片上传七牛云 在我看来无非两种方式 1 前端表单或ajax异步提交请求到七牛服务器 ,当然此时也需要经过后端获取相应的  token (图片->七牛服务器) 2 直接后端代码请求 七牛服务器 ,官方有各版本语言的sdk 提供 ,可提高开发效率 ,降低开发难度  (图片->自己服务器->七牛服务器)

C# 通过http post 请求上传图片和参数

一.C# Winform或控制台 /// <summary> /// 通过http上传图片及传参数 /// </summary> /// <param name="imgPath">图片地址(绝对路径:D:\demo\img\123.jpg)</param> public void UploadImage(string imgPath) { var uploadUrl = "http://localhost:3020/uploa

上传图片到第三方服务器

代码 /// <summary> /// 上传图片到第三方服务器 /// </summary> /// <param name="filePath"></param> /// <param name="picNo"></param> /// <returns></returns> public string UploadFilesToBlueBox(string file

本地上传图片预览

<!DOCTYPE html > <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>图片上传本地预览,获得图片的base64(可压缩)</title> <style type="text/css"> .upload_image {