1

こんにちは私はファイル名とファイルをhttppostメソッドのパラメータとして送信する必要があります私は次のコードを使用しました

string reponseAsString = "";
StringBuilder sb = new StringBuilder();
byte[] buf = new byte[8192];


    ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
        return true;
    };
    string fileToUpload = filepath;
    FileStream rdr = new FileStream(fileToUpload, FileMode.Open);
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); //Given URI is exists
    req.Method = "POST";
    req.ContentLength = rdr.Length;
    req.AllowWriteStreamBuffering = true;
    Stream reqStream = req.GetRequestStream();
    Console.WriteLine(rdr.Length);
    byte[] inData = new byte[rdr.Length];

    // Get data from upload file to inData 
    int bytesRead = rdr.Read(inData, 0, (int)rdr.Length);

    // put data into request stream
    reqStream.Write(inData, 0, (int)rdr.Length);
    rdr.Close();

    // req.GetResponse();
    HttpWebResponse response = (HttpWebResponse)req.GetResponse();

    Stream resStream = response.GetResponseStream();
    string tempString = null;
    int count = 0;

    do
    {
        count = resStream.Read(buf, 0, buf.Length);
        if (count != 0)
        {
            tempString = Encoding.ASCII.GetString(buf, 0, count);
            sb.Append(tempString);

        }
    }

    while (count > 0);


    reponseAsString = sb.ToString();
    reqStream.Close();
}

ここでは、リクエストとしてファイル名を含むURLとファイルパスを送信しますが、必要な応答が得られません。ただし、高度なクライアントを実行すると、c#.net4フレームワークで応答が返されます。

あなたの推測を待っています

4

1 に答える 1

2

multipart/form-dataリクエストエンコーディングを使用できます。それがあなたのサーバーが期待していることだと思います。それで:

string fileToUpload = @"c:\work\somefile.jpg";
string url = "http://foo.com/upload";
using (var client = new WebClient())
{
    byte[] result = client.UploadFile(url, fileToUpload);
    string responseAsString = Encoding.Default.GetString(result);
}

ただし、これは1つのファイルのみに制限されています。複数のファイルをアップロードしたり、POST本文に他の単純なパラメーターを追加したりする必要がある場合は、手動で行う必要があります。この場合に使用できるサンプルクラスについてブログを書きました。

于 2012-08-18T09:54:04.153 に答える