2016-12-15 40 views
0

我使用郵政人在窗口中申請/ form-data的的文件發佈到網頁網址,如下所示,如何編寫代碼以在C#控制檯中的應用程序/表單數據中發佈文件?

http://{host}:{port}/file 

文件形式數據是...,

file "C:/Temp/file.txt" 

在postMan中有效。

但我想編寫代碼在C#控制檯應用程序中執行此操作。

我是新來的,所以請任何人提供任何方法來編寫代碼來處理文件作爲url中的一部分Post Method {application/form-data} in C#。 how-to-fill-forms-and-submit-with-webclient-in-c-sharp

我檢查了鏈接。

它只有代碼才能通過「application/x-www-form-urlencoded」

但我需要代碼「應用程序/表格數據」

注意:我已經嘗試在該鏈接的下面的代碼中顯示415僅支持媒體類型錯誤。

var encoding=new ASCIIEncoding(); 
var postData="C:/test.csv"; 
byte[] data = encoding.GetBytes(postData); 

var myRequest = 
    (HttpWebRequest)WebRequest.Create("http://localhost/MyIdentity/Default.aspx"); 
myRequest.Method = "POST"; 
myRequest.ContentType="application/form-data"; 
myRequest.ContentLength = data.Length; 
var newStream=myRequest.GetRequestStream(); 
newStream.Write(data,0,data.Length); 
newStream.Close(); 

var response = myRequest.GetResponse(); 
var responseStream = response.GetResponseStream(); 
var responseReader = new StreamReader(responseStream); 
var result = responseReader.ReadToEnd(); 

responseReader.Close(); 
response.Close(); 

回答

1

此代碼只工作正常 「的multipart/form-data的」

//Convert each of the three inputs into HttpContent objects 
       byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); 

       HttpContent bytesContent = new ByteArrayContent(fileBytes); 

       // Submit the form using HttpClient and 
       // create form data as Multipart (enctype="multipart/form-data") 

       using (var client = new System.Net.Http.HttpClient()) 
       using (var formData = new MultipartFormDataContent()) 
       { 
        // <input type="text" name="filename" /> 
        formData.Add(bytesContent, "filename", Path.GetFileName(filePath)); 

        // Actually invoke the request to the server 

        // equivalent to (action="{url}" method="post") 
        var response = client.PostAsync(url, formData).Result; 

        // equivalent of pressing the submit button on the form 
        if (!response.IsSuccessStatusCode) 
        { 
         return null; 
        } 
        return response.Content.ReadAsStreamAsync().Result; 
       } 
1

我相信你應該嘗試多部分表單數據而不是應用程序/表單數據。 我已經成功將PowerPoint文件發佈到ASP.NET MVC控制器以處理服務器上的文件。 這裏是link顯示如何使用多部分表單內容類型上傳文件。

相關問題