![](/img/trans.png)
[英]OutOfMemoryException while uploading file with 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.