介绍参数封装
本篇文章为大家展示了怎么在c#中利用WebRequest实现一个多文件上传功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
添加引用
使用WebRequest需要添加引用系统。网络,否则引入出错。
参数封装
方便起见,我把请求参数进行了封装,代码如下:
namespace EasyHttp.Net.Core { public 才能;class  KeyValue {才能 ,,,public string 关键; ,,,public string 价值; ,,,public string FilePath; ,,,public string ContentType=?/*“; ,,,public KeyValue (string 关键,string 价值,string filePath,, string contentType) ,,,{ ,,,,,Key =,关键; ,,,,,Value =,价值; ,,,,,FilePath =, filePath; ,,,,,ContentType =, contentType; ,,,} ,,,public KeyValue (), {,} ,,,public KeyValue (string 关键,string 价值,string filePath) ,,,{ ,,,,,Key =,关键; ,,,,,Value =,价值; ,,,,,FilePath =, filePath; ,,,} ,,,public KeyValue (string 关键,string 价值) ,,,{ ,,,,,Key =,关键; ,,,,,Value =,价值; ,,,} ,,} }
KeyValue代表了广义的参数,可以是普通的键值对,也可以是文件参数。
多文件上传封装
public static void ExecuteMultipartRequest (HttpWebRequest 请求,List,签证中心) { Console.WriteLine才能(request.Headers);//,才能,log.Debug (string.Format (“Uploading {0},用{1},,,文件,,url)); string 才能;boundary =,“- - - - - - - - - - - - - - - - - - - - - - - - -产生绯闻;,+,DateTime.Now.Ticks.ToString (“x"); ,,byte [], boundarybytes =, System.Text.Encoding.ASCII.GetBytes (“\ r \ n——“, +, boundary +,“\ r \ n"); HttpWebRequest 才能;wr =,请求; 时间=wr.ContentType 才能;“多部分/格式;,边界=?+,边界; wr.Method =,才能“POST"; wr.KeepAlive =,才能正确; 时间=wr.Credentials 才能;System.Net.CredentialCache.DefaultCredentials; using 才能;(var rs =, wr.GetRequestStream ()) {才能 ,,,//,普通参数模板 ,,,string formdataTemplate =,“附加项:,格式;,name=\“{0} \“\ r \ n \ r \ n {1}“; ,,,//带文件的参数模板 ,,,string headerTemplate =,“附加项:,格式;,name=\“{0} \“;,文件名=\“{1}\“\ r \ nContent-Type:, {2} \ r \ n \ r \ n"; ,,,foreach (KeyValue KeyValue 签证中心拷贝) ,,,{ ,,,,,//如果是普通参数 ,,,,,if (keyValue.FilePath ==, null) ,,,,,{ ,,,,,,,rs.Write (boundarybytes, 0, boundarybytes.Length); ,,,,,,,string formitem =, string.Format (formdataTemplate, keyValue.Key,, keyValue.Value); ,,,,,,,byte [], formitembytes =, System.Text.Encoding.UTF8.GetBytes (formitem); ,,,,,,,rs.Write (formitembytes, 0, formitembytes.Length); ,,,,,} ,,,,,//如果是文件参数,则上传文件 ,,,,, ,,,,,{ ,,,,,,,rs.Write (boundarybytes, 0, boundarybytes.Length); ,,,,,,,string header =, string.Format (keyValue.Key, headerTemplate,还以为,keyValue.FilePath, keyValue.ContentType); ,,,,,,,byte [], headerbytes =, System.Text.Encoding.UTF8.GetBytes(头); ,,,,,,,rs.Write (headerbytes, 0, headerbytes.Length); ,,,,,,,using (var fileStream =, new 文件流(keyValue.FilePath, FileMode.Open,, FileAccess.Read)) ,,,,,,,{ ,,,,,,,,,byte [], buffer =, new 字节[4096]; null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 怎么在c#中利用WebRequest实现一个多文件上传功能