首页 > 代码库 > POST 方式上传图片
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 = http://www.mamicode.com/new MultipartFormData();>POST 方式上传图片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。