繁体   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