• 使用HttpWebRequest POST 文件,带参数


    public string HttpUploadFile(string url, string file, string paramName, string contentType, NameValueCollection nvc)

    {

        string result = string.Empty;

        string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");

        byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes(" --" + boundary + " ");

     

        HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);

        wr.ContentType = "multipart/form-data; boundary=" + boundary;

        wr.Method = "POST";

        wr.KeepAlive = true;

        wr.Credentials = System.Net.CredentialCache.DefaultCredentials;

     

        Stream rs = wr.GetRequestStream();

     

        string formdataTemplate = "Content-Disposition: form-data; name="{0}" {1}";

        foreach (string key in nvc.Keys)

        {

            rs.Write(boundarybytes, 0, boundarybytes.Length);

            string formitem = string.Format(formdataTemplate, key, nvc[key]);

            byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);

            rs.Write(formitembytes, 0, formitembytes.Length);

        }

        rs.Write(boundarybytes, 0, boundarybytes.Length);

     

        string headerTemplate = "Content-Disposition: form-data; name="{0}"; filename="{1}" Content-Type: {2} ";

        string header = string.Format(headerTemplate, paramName, file, contentType);

        byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);

        rs.Write(headerbytes, 0, headerbytes.Length);

     

        FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);

        byte[] buffer = new byte[4096];

        int bytesRead = 0;

        while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)

        {

            rs.Write(buffer, 0, bytesRead);

        }

        fileStream.Close();

     

        byte[] trailer = System.Text.Encoding.ASCII.GetBytes(" --" + boundary + "-- ");

        rs.Write(trailer, 0, trailer.Length);

        rs.Close();

     

        WebResponse wresp = null;

        try

        {

            wresp = wr.GetResponse();

            Stream stream2 = wresp.GetResponseStream();

            StreamReader reader2 = new StreamReader(stream2);

     

            result = reader2.ReadToEnd();

        }

        catch (Exception ex)

        {

            if (wresp != null)

            {

                wresp.Close();

                wresp = null;

            }

        }

        finally

        {

            wr = null;

        }

     

        return result;

    }

    例子:

    NameValueCollection nvc = new NameValueCollection();
    nvc.Add(
    "id""TTR");
    nvc.Add(
    "btn-submit-photo""Upload");
    HttpUploadFile(
    "http://your.server.com/upload"
    @"C: est est.jpg""file""image/jpeg", nvc);

  • 相关阅读:
    OpenStack--Rabbitmq组件消息队列
    Redis-主从
    haproxy mycat mysql 读写分离MHA高可用
    mysql小白系列_14 线上故障分析与排错
    mysql小白系列_13 Online DDL
    mysql小白系列_12 sysbench
    mysql小白系列_11 MHA补充
    mysql小白系列_11 MHA
    mysql小白系列_10 mysql主从复制原理
    mysql小白系列_09 mysql性能优化关键点
  • 原文地址:https://www.cnblogs.com/Byrd/p/3418284.html
Copyright © 2020-2023  润新知