使用System.net.webclient上传文件



我正在尝试重新创建curl命令以使用system.net.webclient或其他方法在c#上载文件,而我只是没有运气发送文件和名称。 - 值在一起,以及卷曲使用的auth。有人知道这个技巧吗?我仅限于框架4.0。

我只需要将一个简单的CSV文件发送到URL,如下所述: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");

此处将设置表单字段和auth的代码,但也不允许使用文件上传

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);
}

以下是发布多派式和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。

注意"在多派式datacontent中。

在4.5.1中,多派式datacontent用正确的引号包装数据。

相关内容

  • 没有找到相关文章

最新更新