【发布时间】:2017-04-24 23:43:20
【问题描述】:
我正在尝试使用 System.Net.WebClient 或其他方法重新创建一个 curl 命令以在 C# 中上传文件,但我只是没有运气将文件和名称-值的东西一起发送,以及curl 使用的身份验证。有谁知道这其中的诀窍?我仅限于框架 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
我使用我找到的代码 sn-p 和类尝试了这个,但它不允许网络凭据
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);
}
【问题讨论】:
-
您应该包含您尝试过的 WebClient 代码并解释它是如何不起作用的。
-
谢谢,我添加了一些我试过的代码。