怎么在c#中利用WebRequest实现一个多文件上传功能

  介绍

本篇文章为大家展示了怎么在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实现一个多文件上传功能