簡體   English   中英

使用system.net.webclient上傳文件

[英]Uploading a file using system.net.webclient

我試圖通過使用System.Net.WebClient或其他方法來重新創建curl命令以使用C#上傳文件,但是我沒有運氣將文件和名稱/值值文件以及卷曲的用途。 有人知道這個竅門嗎? 我僅限於框架4.0。

我只需要向URL發送一個簡單的csv文件,如下所述: http : //quickfuseapps.com/docs/api/sdb_upload_csv

命令本身是:

curl -u username:password -F tablekey=username:customers -F mode=replace -F csv=@customerdata.csv http://quickfuseapps.com/api/1/sdb/upload/csv

我使用找到的代碼段和類嘗試了此操作,但不允許使用網絡憑據

Helpers.MultipartForm form = new Helpers.MultipartForm("http://quickfuseapps.com/api/1/sdb/upload/csv");
form.SetField("tablekey", "user:table");
form.SetField("mode", "replace");
// NO auth method to set credentials

form.SendFile(@"d:\test.csv");  form.SetField("tablekey", "user:table");
form.SetField("mode", "replace");
// NO auth method to set credentials

form.SendFile(@"d:\test.csv");

這是用於設置表單字段和身份驗證的代碼,但不允許文件上傳

using (var client = new WebClient())
{
    var values = new NameValueCollection();
    values.Add("app_id", "5gxWWnLlg");
    values.Add("tablekey", "user:table");                
    values.Add("dial_col", "PhoneNumber");
    values.Add("result_col", "outbound_result");

    client.Credentials = new NetworkCredential("user", "pwd");
    client.Encoding = Encoding.ASCII;

    //var response = client.UploadValues("http://quickfuseapps.com/api/1/outbound/queue", values);
    var response = client.UploadValues("http://quickfuseapps.com/api/1/outbound/queue/", "POST", values);

    var responseString = Encoding.Default.GetString(response);
}

這是一個發布MultipartFormContent和HttpClient而不是WebClient的示例。

    using (var httpClient = 
        new HttpClient(new HttpClientHandler { Credentials = new NetworkCredential { <your credentials> } }) 
    {
        var byteArrayContent =   new ByteArrayContent(<.csv bytes read>);
        byteArrayContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/csv");

        var response = await httpClient.PostAsync(_importUrl, new MultipartFormDataContent
        {
             {new StringContent(<formField1Value>), "\"<formfield1>\""},
             // more form field and values
             {byteArrayContent, "\"file\"", "\"<your file name>\""}
        });
    }

這適用於.net 4.5。

注意MultipartFormDataContent中的\\“。MultipartFormDataContent中有一個錯誤

在4.5.1中,MultipartFormDataContent使用正確的引號包裝數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM