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 方式上传图片相关推荐

  1. android上传本地图片到服务器上,Android使用post方式上传图片到服务器的方法

    本文实例讲述了Android使用post方式上传图片到服务器的方法.分享给大家供大家参考,具体如下: /** * 上传文件到服务器类 * * @author tom */ public class U ...

  2. android用上传图片到服务器上,Android使用post方式上传图片到服务器的方法

    本文实例讲述了Android使用post方式上传图片到服务器的方法.分享给大家供大家参考,具体如下: /** * 上传文件到服务器类 * * @author tom */ public class U ...

  3. 调用宜远ai测肤接口-multipart方式上传图片(HttpURLConnection)

    调用宜远ai测肤接口-multipart方式上传图片(HttpURLConnection) 官网:https://api.yimei.ai/apimgr/#/api/home 官方文档:https:/ ...

  4. Windows Phone 使用 HttpWebRequest 对象,通过POST 方式上传图片

    Windows Phone 客户端有时候需要把用户的图片保存到服务器端.本示例讲解如果把用户的头像,通过表单传输的方式,把用户的 头像传递到 Web 端.当前的工程选择的是 OS7.1,在 WP8上通 ...

  5. 上传图片到服务器不能马上响应,用post方式上传图片到服务器

    /** * 上传文件到服务器类 * * @author tom */ public class UploadUtil { private static final String TAG = " ...

  6. 用form表单提交方式上传图片到服务器

    springMVC为文件上传提供了直接的支持,这种支持是通过MultipartResolver实现的,实现类为CommonsMultipartResovler. 依赖:commons-fileuplo ...

  7. 整合百度UEditor上传图片到阿里云OSS

    前言 将图片上传到阿里云OSS是一种趋势,一个必然.当你的项目图片过多,需要频繁上传和替换的时候,用阿里云OSS可以很方便的管理你的图片,节省服务器空间,大大提高了效率.阿里云OSS是阿里云提供的海量 ...

  8. ueditor跨域上传图片文件(基于jsp框架、tomcat)

    额,好久没有用到ueditor了,因为现在的相关工作很少涉及到富文本编辑:最近临时带了一个项目,里面要用到富文本编辑器,而且文件要统一上传到文件服务器上保存:应为以前用过ueditor就试着在网上着一 ...

  9. 七牛云 Java Web上传图片

    本文由黑壳网原创 本文来源七牛云 Java Web上传图片 - 黑壳网 壳叔搞笑一刻 没有对手 警官抓到正在赌博的四个人."你们知道这是犯法的吗?"警官向第一个人怒吼道. &quo ...

  10. 微信小程序/网站 上传图片到腾讯云COS

    COS简介: 腾讯云提供的一种对象存储服务,供开发者存储海量文件的分布式存储服务.可以将自己开发的应用的存储部分全部接入COS的存储桶中,有效减少应用服务器的带宽消耗等.个人也可以通过腾讯云账号免费使 ...

最新文章

  1. 发布新模板-画情画心
  2. MySQL—创建数据表
  3. 微服务中的异步消息通讯
  4. pass样本量_年度质量回顾-样本量
  5. 新概念英语第三册01-20课(转)
  6. DFS+BFS(POJ3083)
  7. 解决AndroidStudio报错问题:Missing essential plugin(亲测有效)
  8. 【mcuclub】MQ系列气体传感器
  9. 计算机考研山西大学和太原理工大学,山西大学和太原理工大学,山西省内的两所知名高校,哪所更强?...
  10. 你知道小米手机便签如何导入录音和视频文件吗?
  11. 没有申报就对房屋进行装修可以吗?
  12. 计算机科学与技术专业 ppt,计算机科学与技术专业.ppt
  13. Android指定物理按键唤醒屏幕
  14. ACCESS数据库防下载技术
  15. 弹性蛋白(Elastin)检测试剂盒解决方案
  16. 阿里云DNS服务器免费版和付费版列表
  17. 【洛谷P1486】郁闷的出纳员【树状数组】
  18. Pycharm创建文件模板
  19. vue 使用iconfont图库
  20. 如何快速求最大公约数和最小公倍数

热门文章

  1. iterator总结(未完)
  2. [转]android刷新后R.java不见了
  3. 如何学习自然语言处理(转)
  4. 野外帐篷露营避难有感
  5. java mysql存储图片_Java存储图片到Mysql
  6. Nginx源码分析 - 基础数据结构篇 - 内存池 ngx_palloc.c(02)
  7. 位运算 -- 思考
  8. 设计模式---解释器模式(C++实现)
  9. JVM学习04-垃圾回收概念与算法
  10. linux数据库定期备份,linux数据库定期备份