2017-04-24 33 views
0

我试图重新建立一个curl命令使用System.Net.WebClient或其他方法来上传在C#中的文件,上传文件,而我只是没有将文件发送运气和名称价值的东西在一起,以及curl使用的身份验证。任何人都知道这个诀窍?我仅限于框架4.0。使用system.net.webclient

我只需要发送一个简单的CSV文件到一个URL,如下所述:http://quickfuseapps.com/docs/api/sdb_upload_csv

命令本身是:

curl -u username:password -F tablekey=username:customers -F mode=replace -F [email protected] http://quickfuseapps.com/api/1/sdb/upload/csv 

我想这使用的代码片段和I类发现,但它不会允许网络凭证

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

你应该包括你尝试了Web客户端的代码,并解释如何不起作用。 – mason

+0

谢谢,我在一些代码,我已经试过加入。 –

回答

1

下面是发布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一个bug

在4.5.1 MultipartFormDataContent用正确的引号包裹的数据。

+0

你能看到这个吗?https://stackoverflow.com/questions/48278333/php-curl-to-net-httprequest-files -uploading到服务器 –

相关问题