截取的数据包如下:POST /index.php?ctl=upload&action=temp_upload HTTP/1.1
Accept: text/*
Content-Type: multipart/form-data; boundary=----------cH2Ef1ae0Ef1KM7GI3GI3ae0Ef1cH2
User-Agent: Shockwave Flash
Host: u.115.com
Content-Length: 2170
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: OOFL=canghai123; OOFA=%2503%2501PV_V%2505%250CTVV%2505%255E%2503_%2503%2500%250B%255CW%2509%2503%2503%255D%250BSPP%2523%2510I%251DVX%250C%255CWP%2508%2503%2506%2502%250AT%2506W%250C%250A%2507%250F%2507%2502%255BQ%2507Q%2506VWTR%2502%2509%2501%2501%2507W%255EVZ%2503P%2506Q%250FZ%2504Z%2504; OOFO=1; ad_cookie_115=1第二个:
------------cH2Ef1ae0Ef1KM7GI3GI3ae0Ef1cH2
Content-Disposition: form-data; name="Filename".js
------------cH2Ef1ae0Ef1KM7GI3GI3ae0Ef1cH2
Content-Disposition: form-data; name="cookie"%03%01PV_V%05%0CTVV%05%5E%03_%03%00%0B%5CW%09%03%03%5D%0BSPP%23%10I%1DVX%0C%5CWP%08%03%06%02%0AT%06W%0C%0A%07%0F%07%02%5BQ%07Q%06VWTR%02%09%01%01%07W%5EVZ%03P%06Q%0FZ%04Z%04
------------cH2Ef1ae0Ef1KM7GI3GI3ae0Ef1cH2
Content-Disposition: form-data; name="aid"1
------------cH2Ef1ae0Ef1KM7GI3GI3ae0Ef1cH2
Content-Disposition: form-data; name="Filedata"; filename=".js"
Content-Type: application/octet-stream第三个:function priceAjax() { }
priceAjax._path = '/dwr';priceAjax.getCompanyService = function(callback) {
    DWREngine._execute(priceAjax._path, 'priceAjax', 'getCompanyService', callback);
}priceAjax.setCompanyService = function(p0, callback) {
    DWREngine._execute(priceAjax._path, 'priceAjax', 'setCompanyService', p0, callback);
}priceAjax.updateDealerPriceDate = function(p0, callback) {
    DWREngine._execute(priceAjax._path, 'priceAjax', 'updateDealerPriceDate', p0, callback);
}priceAjax.dealerPriceCount = function(p0, p1, callback) {
    DWREngine._execute(priceAjax._path, 'priceAjax', 'dealerPriceCount', p0, p1, callback);
}priceAjax.getPriceService = function(callback) {
    DWREngine._execute(priceAjax._path, 'priceAjax', 'getPriceService', callback);
}priceAjax.setPriceService = function(p0, callback) {
    DWREngine._execute(priceAjax._path, 'priceAjax', 'setPriceService', p0, callback);
}priceAjax.applicationDealerPrice = function(p0, p1, p2, callback) {
    DWREngine._execute(priceAjax._path, 'priceAjax', 'applicationDealerPrice', p0, p1, p2, callback);
}priceAjax.getPointService = function(callback) {
    DWREngine._execute(priceAjax._path, 'priceAjax', 'getPointService', callback);
}priceAjax.setPointService = function(p0, callback) {
    DWREngine._execute(priceAjax._path, 'priceAjax', 'setPointService', p0, callback);
}第四个:
------------cH2Ef1ae0Ef1KM7GI3GI3ae0Ef1cH2
Content-Disposition: form-data; name="Upload"Submit Query
------------cH2Ef1ae0Ef1KM7GI3GI3ae0Ef1cH2--谢谢。。网址为 : http://u.115.com  实验账号: canghai123 密码 6198198   点上传文件  --》 添加文件 即可

解决方案 »

  1.   

    C# 模仿表单提交数据的代码using System;
    using System.Collections.Specialized;
    using System.Globalization;
    using System.IO;
    using System.Net;
    using System.Text;
    using Microsoft.Win32;
    public static class Upload
    {    public static WebResponse PostFile(Uri requestUri, NameValueCollection postData, Stream fileData, string fileName,
                                           string fileContentType, string fileFieldName, CookieContainer cookies, NameValueCollection headers)
        {
            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(requestUri);        string ctype;        fileContentType = string.IsNullOrEmpty(fileContentType)
                                  ? TryGetContentType(fileName, out ctype) ? ctype : "application/octet-stream"
                                  : fileContentType;        fileFieldName = string.IsNullOrEmpty(fileFieldName) ? "file" : fileFieldName;        if (headers != null)
            {
                // set the headers
                foreach (string key in headers.AllKeys)
                {
                    string[] values = headers.GetValues(key);
                    if (values != null)
                        foreach (string value in values)
                        {
                            webrequest.Headers.Add(key, value);
                        }
                }
            }
            webrequest.Method = "POST";        if (cookies != null)
            {
                webrequest.CookieContainer = cookies;
            }        string boundary = "----------" + DateTime.Now.Ticks.ToString("x", CultureInfo.InvariantCulture);        webrequest.ContentType = "multipart/form-data; boundary=" + boundary;        StringBuilder sbHeader = new StringBuilder();        // add form fields, if any
            if (postData != null)
            {
                foreach (string key in postData.AllKeys)
                {
                    string[] values = postData.GetValues(key);
                    if (values != null)
                        foreach (string value in values)
                        {
                            sbHeader.AppendFormat("--{0}\r\n", boundary);
                            sbHeader.AppendFormat("Content-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}\r\n", key,
                                                  value);
                        }
                }
            }
            if (fileData != null)
            {
                sbHeader.AppendFormat("--{0}\r\n", boundary);
                sbHeader.AppendFormat("Content-Disposition: form-data; name=\"{0}\"; {1}\r\n", fileFieldName,
                                      string.IsNullOrEmpty(fileName)
                                          ?
                                              ""
                                          : string.Format(CultureInfo.InvariantCulture, "filename=\"{0}\";",
                                                          Path.GetFileName(fileName)));            sbHeader.AppendFormat("Content-Type: {0}\r\n\r\n", fileContentType);
            }        byte[] header = Encoding.UTF8.GetBytes(sbHeader.ToString());
            byte[] footer = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
            long contentLength = header.Length + (fileData != null ? fileData.Length : 0) + footer.Length;        webrequest.ContentLength = contentLength;        using (Stream requestStream = webrequest.GetRequestStream())
            {
                requestStream.Write(header, 0, header.Length);
                if (fileData != null)
                {
                    // write the file data, if any
                    byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)fileData.Length))];
                    int bytesRead;
                    while ((bytesRead = fileData.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        requestStream.Write(buffer, 0, bytesRead);
                    }
                }            // write footer
                requestStream.Write(footer, 0, footer.Length);            return webrequest.GetResponse();
            }
        }
        public static WebResponse PostFile(Uri requestUri, NameValueCollection postData, string fileName,
                                           string fileContentType, string fileFieldName, CookieContainer cookies,
                                           NameValueCollection headers)
        {
            using (FileStream fileData = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                return PostFile(requestUri, postData, fileData, fileName, fileContentType, fileFieldName, cookies,
                                headers);
            }
        }    public static bool TryGetContentType(string fileName, out string contentType)
        {
            try
            {
                RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"MIME\Database\Content Type");            if (key != null)
                {
                    foreach (string keyName in key.GetSubKeyNames())
                    {
                        RegistryKey subKey = key.OpenSubKey(keyName);
                        if (subKey != null)
                        {
                            string subKeyValue = (string)subKey.GetValue("Extension");                        if (!string.IsNullOrEmpty(subKeyValue))
                            {
                                if (string.Compare(Path.GetExtension(fileName).ToUpperInvariant(),
                                                   subKeyValue.ToUpperInvariant(), StringComparison.OrdinalIgnoreCase) ==
                                    0)
                                {
                                    contentType = keyName;
                                    return true;
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
            }
            contentType = "";
            return false;
        }}下载http://skysanders.net/subtext/archive/2010/04/12/c-file-upload-with-form-fields-cookies-and-headers.aspx
      

  2.   

    WebClient或HttpWebRequest模拟上传文件和数据