POST 方式上传图片
Post 方式 模仿 form表单 上传 图片 设置enctype = multipart/form-data
<form enctype="multipart/form-data"></form>
自定义 MultipartFormData 类 (4.5以上版本好像有这个类 类名称叫啥忘记了)
/// <summary>/// multipart/form-data 数据类型/// </summary>public class MultipartFormData{public static string ContentType = "multipart/form-data; boundary=A300x";private string headerStream = "--A300x\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: application/octet-stream\r\n\r\n";private string footerString = "--A300x--\r\n";private string compart = "\r\n";private string headerString = "--A300x\r\nContent-Disposition: form-data; name=\"{0}\"\r\n\r\n";private List<byte> lists = new List<byte>();private byte[] footerBytes;private byte[] comparts;public MultipartFormData(){footerBytes = Encoding.UTF8.GetBytes(footerString);comparts = Encoding.UTF8.GetBytes(compart); }public byte[] Buffer{get{return lists.ToArray();}}private bool IsEnd = false;/// <summary>////// </summary>public void End(){if (!IsEnd){IsEnd = true;//lists.AddRange(footerBytes.ToList()); this.AddRanges(footerBytes);}}public void AddRanges(byte[] array) {foreach (byte b in array)lists.Add(b);}/// <summary>/// 向序列化到多部/窗体数据 MIME 类型的 对象集合添加 HTTP 内容/// </summary>/// <param name="content">要添加到集合中的 HTTP 内容</param>/// <param name="name">要添加的 HTTP 内容的名称</param>public void Add(string content, string name){byte[] headerBytes = Encoding.UTF8.GetBytes(String.Format(headerString, name));this.AddRanges(headerBytes);byte[] buffer = Encoding.UTF8.GetBytes(content);this.AddRanges(buffer);this.AddRanges(comparts);}/// <summary>/// 向序列化到多部/窗体数据 MIME 类型的 对象集合添加 HTTP 内容/// </summary>/// <param name="content">要添加到集合中的 HTTP 内容</param>/// <param name="name">要添加的 HTTP 内容的名称</param>/// <param name="fileName">要添加到集合中的 HTTP 内容的文件名</param>public void Add(Stream content, string name, string fileName){byte[] headerBytes = Encoding.UTF8.GetBytes(String.Format(headerStream, name, fileName));this.AddRanges(headerBytes);byte[] buffer = new byte[content.Length];content.Read(buffer, 0, buffer.Length);content.Seek(0, SeekOrigin.Begin);this.AddRanges(buffer);this.AddRanges(comparts);}/// <summary>/// 向序列化到多部/窗体数据 MIME 类型的 对象集合添加 HTTP 内容/// </summary>/// <param name="content">要添加到集合中的 HTTP 内容</param>/// <param name="name">要添加的 HTTP 内容的名称</param>/// <param name="fileName">要添加到集合中的 HTTP 内容的文件名</param>public void Add(byte[] content, string name, string fileName){byte[] headerBytes = Encoding.UTF8.GetBytes(String.Format(headerStream, name, fileName));this.AddRanges(headerBytes);this.AddRanges(content);this.AddRanges(comparts);}}
上传图片代码
/// <summary>/// form-data 数据类型传递数据/// </summary>private MultipartFormData multiparFormData = new MultipartFormData();/// <summary>/// 键值对应/// </summary>/// <param name="key"></param>/// <param name="value"></param>public void AddFormData(string key, string value){this.multiparFormData.Add(value, key);}/// <summary>/// 传递一个 strem 类型/// </summary>/// <param name="key"></param>/// <param name="value"></param>/// <param name="fileName"></param>public void AddFormData(string key, Stream value, string fileName){this.multiparFormData.Add(value, key, fileName);}/// <summary>/// 传递一个 byte[] 类型/// </summary>/// <param name="key"></param>/// <param name="value"></param>/// <param name="fileName"></param>public void AddFormData(string key, byte[] value, string fileName){this.multiparFormData.Add(value, key, fileName);}private static CookieContainer m_Cookie = new CookieContainer();/// <summary>/// POST form-data 方式请求消息/// </summary>/// <param name="url"></param>/// <param name="isHttps"></param>/// <returns></returns>public string PostFromData(string url, bool isHttps) {try{multiparFormData.End();HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);request.Method = "POST";request.ContentType = MultipartFormData.ContentType;request.CookieContainer = m_Cookie;//设置上一个访问页面的cookie 保持sessionrequest.ContentLength = multiparFormData.Buffer.Length;Stream stream = request.GetRequestStream();stream.Write(multiparFormData.Buffer, 0, multiparFormData.Buffer.Length);stream.Close();WebResponse response = request.GetResponse();Stream streamResponse = response.GetResponseStream();StreamReader sr = new StreamReader(streamResponse);return sr.ReadToEnd();}catch (Exception ex) {Log.WriteLog("POST form-data 方式请求消息:" + ex.Message);return "error";}}
转载于:https://www.cnblogs.com/zbjuke/p/4154713.html
POST 方式上传图片相关推荐
- android上传本地图片到服务器上,Android使用post方式上传图片到服务器的方法
本文实例讲述了Android使用post方式上传图片到服务器的方法.分享给大家供大家参考,具体如下: /** * 上传文件到服务器类 * * @author tom */ public class U ...
- android用上传图片到服务器上,Android使用post方式上传图片到服务器的方法
本文实例讲述了Android使用post方式上传图片到服务器的方法.分享给大家供大家参考,具体如下: /** * 上传文件到服务器类 * * @author tom */ public class U ...
- 调用宜远ai测肤接口-multipart方式上传图片(HttpURLConnection)
调用宜远ai测肤接口-multipart方式上传图片(HttpURLConnection) 官网:https://api.yimei.ai/apimgr/#/api/home 官方文档:https:/ ...
- Windows Phone 使用 HttpWebRequest 对象,通过POST 方式上传图片
Windows Phone 客户端有时候需要把用户的图片保存到服务器端.本示例讲解如果把用户的头像,通过表单传输的方式,把用户的 头像传递到 Web 端.当前的工程选择的是 OS7.1,在 WP8上通 ...
- 上传图片到服务器不能马上响应,用post方式上传图片到服务器
/** * 上传文件到服务器类 * * @author tom */ public class UploadUtil { private static final String TAG = " ...
- 用form表单提交方式上传图片到服务器
springMVC为文件上传提供了直接的支持,这种支持是通过MultipartResolver实现的,实现类为CommonsMultipartResovler. 依赖:commons-fileuplo ...
- 整合百度UEditor上传图片到阿里云OSS
前言 将图片上传到阿里云OSS是一种趋势,一个必然.当你的项目图片过多,需要频繁上传和替换的时候,用阿里云OSS可以很方便的管理你的图片,节省服务器空间,大大提高了效率.阿里云OSS是阿里云提供的海量 ...
- ueditor跨域上传图片文件(基于jsp框架、tomcat)
额,好久没有用到ueditor了,因为现在的相关工作很少涉及到富文本编辑:最近临时带了一个项目,里面要用到富文本编辑器,而且文件要统一上传到文件服务器上保存:应为以前用过ueditor就试着在网上着一 ...
- 七牛云 Java Web上传图片
本文由黑壳网原创 本文来源七牛云 Java Web上传图片 - 黑壳网 壳叔搞笑一刻 没有对手 警官抓到正在赌博的四个人."你们知道这是犯法的吗?"警官向第一个人怒吼道. &quo ...
- 微信小程序/网站 上传图片到腾讯云COS
COS简介: 腾讯云提供的一种对象存储服务,供开发者存储海量文件的分布式存储服务.可以将自己开发的应用的存储部分全部接入COS的存储桶中,有效减少应用服务器的带宽消耗等.个人也可以通过腾讯云账号免费使 ...
最新文章
- 发布新模板-画情画心
- MySQL—创建数据表
- 微服务中的异步消息通讯
- pass样本量_年度质量回顾-样本量
- 新概念英语第三册01-20课(转)
- DFS+BFS(POJ3083)
- 解决AndroidStudio报错问题:Missing essential plugin(亲测有效)
- 【mcuclub】MQ系列气体传感器
- 计算机考研山西大学和太原理工大学,山西大学和太原理工大学,山西省内的两所知名高校,哪所更强?...
- 你知道小米手机便签如何导入录音和视频文件吗?
- 没有申报就对房屋进行装修可以吗?
- 计算机科学与技术专业 ppt,计算机科学与技术专业.ppt
- Android指定物理按键唤醒屏幕
- ACCESS数据库防下载技术
- 弹性蛋白(Elastin)检测试剂盒解决方案
- 阿里云DNS服务器免费版和付费版列表
- 【洛谷P1486】郁闷的出纳员【树状数组】
- Pycharm创建文件模板
- vue 使用iconfont图库
- 如何快速求最大公约数和最小公倍数