标签:Core fs END string C# PREFIX boundary Net LINE
1 /// <summary> 2 /// Post单个文件 3 /// </summary> 4 /// <typeparam name="T">返回结果</typeparam> 5 /// <param name="url">提交地址</param> 6 /// <param name="fieldName">参数名称</param> 7 /// <param name="file">文件信息</param> 8 /// <returns></returns> 9 public static T PostSingleFile<T>(string url ,string fieldName, PostFileItem file) 10 { 11 Stream fs = file.FileStream; 12 if (!fs.CanRead) 13 { 14 return default; 15 } 16 byte[] buffer = new byte[fs.Length]; 17 fs.Read(buffer, 0, (int)fs.Length); 18 fs.Close(); 19 20 string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); 21 string PREFIX = "--", LINE_END = "\r\n"; 22 23 StringBuilder sb = new StringBuilder(); 24 sb.Append(PREFIX + boundary + LINE_END); 25 sb.Append("Content-Disposition: form-data; name=\"" + fieldName + "\"; filename=\"" + file.FileName + "\"" + LINE_END); 26 sb.Append("Content-Type: " + file.ContentType + LINE_END + LINE_END); 27 WebRequest request = WebRequest.Create(url); 28 request.Method = "POST"; 29 request.ContentType = "multipart/form-data;boundary=" + boundary; 30 Stream dataStream = request.GetRequestStream(); 31 dataStream.Write(Encoding.UTF8.GetBytes(sb.ToString()), 0, Encoding.UTF8.GetByteCount(sb.ToString())); 32 dataStream.Write(buffer, 0, buffer.Length); 33 dataStream.Write(Encoding.UTF8.GetBytes(LINE_END + PREFIX + boundary + PREFIX + LINE_END), 0, Encoding.UTF8.GetByteCount(LINE_END + PREFIX + boundary + PREFIX + LINE_END)); 34 dataStream.Close(); 35 36 WebResponse webResponse = request.GetResponse(); 37 Stream newStream = webResponse.GetResponseStream(); 38 39 StreamReader rdr = new StreamReader(newStream); 40 var result = rdr.ReadToEnd(); 41 42 if (!string.IsNullOrEmpty(result)) 43 return JsonUtil.ConvertJsonToObject<T>(result); 44 45 return default; 46 }
提交文件使用的工具类:
1 /// <summary> 2 /// 提交文件请求参数 3 /// </summary> 4 public class PostFileItem 5 { 6 /// <summary> 7 /// 文件数据流 8 /// </summary> 9 public Stream FileStream { get; set; } 10 /// <summary> 11 /// 文件名称 12 /// </summary> 13 public string FileName { get; set; } 14 /// <summary> 15 /// 文件类别 16 /// </summary> 17 public string ContentType { get; set; } 18 }
标签:Core,fs,END,string,C#,PREFIX,boundary,Net,LINE 来源: https://www.cnblogs.com/SuperJason/p/15796683.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。