zoukankan      html  css  js  c++  java
  • 使用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);

  • 相关阅读:
    MySQL效能监控工具mysqlreport安装和中文说明
    mysql的配置文件my.cnf
    MySQL的高可用设计方案的记录
    jQuery 求页面加载等待特效
    如果客户端禁用cookie,session还能使用吗?
    heartbeat重要文件的配置参数说明
    MySQL的索引类型和左前缀索引
    比较一下Linux下的Epoll模型和select模型的区别
    网络防火墙和NAT地址转换
    Postfix+dovecot搭建简单邮箱服务器
  • 原文地址:https://www.cnblogs.com/Byrd/p/3418284.html
Copyright © 2011-2022 走看看