• winform通过HttpWebRequest(post方式)上传文件和传递参数


    代码
      1  private void button1_Click(object sender, EventArgs e)
      2         {
      3             UploadFileHttpRequest(AppDomain.CurrentDomain.BaseDirectory.Trim() + "bb.txt");
      4         }
      5         private string UploadFileHttpRequest(string fileName)
      6         {
      7             string output = string.Empty;
      8             MemoryStream postStream = null;
      9             BinaryWriter postWriter = null;
     10             HttpWebResponse response = null;
     11             StreamReader responseStream = null;
     12 
     13             const string CONTENT_BOUNDARY = "----------ae0cH2cH2GI3Ef1KM7GI3Ij5cH2gL6";
     14             const string CONTENT_BOUNDARY_PREFIX = "--";
     15 
     16             try
     17             {
     18                 UriBuilder uriBuilder = new UriBuilder("http://localhost:7408/WebT/t.aspx");
     19                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uriBuilder.Uri);
     20                 request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
     21                 request.Timeout = 300000;
     22                 request.ContentType = "multipart/form-data; boundary=" + CONTENT_BOUNDARY;
     23                 postStream = new MemoryStream();
     24                 postWriter = new BinaryWriter(postStream);
     25                 //-- 参数
     26                 //param['setType']
     27                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes(CONTENT_BOUNDARY_PREFIX + CONTENT_BOUNDARY + "\r\n" +
     28                 "Content-Disposition: form-data; name=\"param['setType']\" \r\n\r\n"));
     29                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes("2"));
     30                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes("\r\n"));
     31                 //param['startTime']
     32                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes(CONTENT_BOUNDARY_PREFIX + CONTENT_BOUNDARY + "\r\n" +
     33                 "Content-Disposition: form-data; name=\"param['startTime']\" \r\n\r\n"));
     34                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes(""));
     35                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes("\r\n"));
     36                 //param['endTime']
     37                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes(CONTENT_BOUNDARY_PREFIX + CONTENT_BOUNDARY + "\r\n" +
     38                 "Content-Disposition: form-data; name=\"param['endTime']\" \r\n\r\n"));
     39                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes(""));
     40                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes("\r\n"));
     41                 //param['resourceID']
     42                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes(CONTENT_BOUNDARY_PREFIX + CONTENT_BOUNDARY + "\r\n" +
     43                 "Content-Disposition: form-data; name=\"param['resourceID']\" \r\n\r\n"));
     44                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes("1398130"));
     45                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes("\r\n"));
     46                 //forwardUrl
     47                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes(CONTENT_BOUNDARY_PREFIX + CONTENT_BOUNDARY + "\r\n" +
     48                 "Content-Disposition: form-data; name=\"forwardUrl\" \r\n\r\n"));
     49                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes("/cs/showBatchToneInfoStart.action"));
     50                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes("\r\n"));
     51                 //uploadFiles
     52                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes(CONTENT_BOUNDARY_PREFIX + CONTENT_BOUNDARY + "\r\n" +
     53                 "Content-Disposition: form-data; name=\"uploadFiles\" \r\n\r\n"));
     54                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes(fileName));
     55                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes("\r\n"));
     56                 byte[] fileContent = File.ReadAllBytes(fileName);
     57                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes(CONTENT_BOUNDARY_PREFIX + CONTENT_BOUNDARY + "\r\n" +
     58                 "Content-Disposition: form-data; name=\"FileContent\" " +
     59                 "filename=\"" + Path.GetFileName(fileName) + "\"\r\n\r\n"));
     60                 postWriter.Write(fileContent);
     61                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes("\r\n"));
     62                 postWriter.Write(Encoding.GetEncoding("gb2312").GetBytes(CONTENT_BOUNDARY_PREFIX + CONTENT_BOUNDARY + "--"));
     63 
     64                 request.ContentLength = postStream.Length;
     65                 request.Method = "POST";
     66                 Stream requestStream = request.GetRequestStream();
     67                 postStream.WriteTo(requestStream);
     68                 response = (HttpWebResponse)request.GetResponse();
     69 
     70                 for (int i = 0; i < response.Headers.Count; i++)
     71                 {
     72                     output += response.Headers.Keys[i] + "" + response.GetResponseHeader(response.Headers.Keys[i]) + "\r\n";
     73                 }
     74                 Encoding enc = Encoding.GetEncoding("gb2312");
     75 
     76                 try
     77                 {
     78                     if (response.ContentEncoding.Length > 0) enc = Encoding.GetEncoding(response.ContentEncoding);
     79                 }
     80                 catch { }
     81                 responseStream = new StreamReader(response.GetResponseStream(), enc);
     82                 output += "\r\n\r\n\r\n" + responseStream.ReadToEnd();
     83             }
     84             finally
     85             {
     86                 if (postWriter != null) postWriter.Close();
     87                 if (postStream != null)
     88                 {
     89                     postStream.Close();
     90                     postStream.Dispose();
     91                 }
     92                 if (response != null) response.Close();
     93                 if (responseStream != null)
     94                 {
     95                     responseStream.Close();
     96                     responseStream.Dispose();
     97                 }
     98             }
     99             return output;
    100         }
  • 相关阅读:
    javascript类型系统——日期Date对象
    javascript类型系统——undefined和null
    javascript运算符语法概述
    javascript运算符
    javascript语句——表达式语句、块语句、空语句和声明语句
    javascript语句
    javascript中的数据类型转换
    javascript类型系统
    Sqli-labs Less-21 cookie注入 base64编码 updatexml()报错注入
    Sqli-labs Less-20 cookie注入 extractvalue()报错注入
  • 原文地址:https://www.cnblogs.com/94cool/p/1888909.html
Copyright © 2020-2023  润新知