• 【转】使用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("\r\n--" + boundary + "\r\n");

        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}\"\r\n\r\n{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}\"\r\nContent-Type: {2}\r\n\r\n";
        
    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("\r\n--" + boundary + "--\r\n");
        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:\test\test.jpg""file""image/jpeg", nvc);

    参考:
    http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data/1924810#1924810

    转自:http://www.cnblogs.com/94cool/archive/2011/03/05/1971873.html

  • 相关阅读:
    启动与指定的文件或协议相关联的默认应用程序
    Windows phone msdn 索引
    34、ShareTarget
    36、UI contrast and settings
    Windows 8下默认管理员登录
    精益创业 Lean Startup
    38、animation
    access2003 基础 1008
    JQuery DOM
    用Javascript实现面向对象编程(封装,抽象,继承,多态)
  • 原文地址:https://www.cnblogs.com/linyechengwei/p/2149801.html
Copyright © 2020-2023  润新知