2016-12-15 1 views
0

Я использую Post Человек в окна, чтобы отправить файл в приложения/form-данных в URL-адрес веб, как показано ниже.,Как написать код, чтобы опубликовать файл в приложении/форме-данных в консоли C#?

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

Файл в форм-данных ..,

file "C:/Temp/file.txt" 

В postMan это сработало.

Но я хочу написать код для выполнения этого в консольном приложении C#.

Я новичок в этом. Поэтому, пожалуйста, кто-нибудь дает какой-либо подход для написания кода для обработки файла как части URL-адреса в Метод публикации {application/form-data} в C#. how-to-fill-forms-and-submit-with-webclient-in-c-sharp

Я проверил связь прилагается.

Только у него есть код для передачи «application/x-www-form-urlencoded».

Но мне нужен код для "application/form-data".

Примечание: я пробовал, что под кодом, указанным в этой ссылке, отображается 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

Этот код работает только штраф за «многочастные/фасонные данные»

//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

Я считаю, что вам следует попробовать multipart form-data вместо приложений/форм-данных. Я успешно разместил файл PowerPoint для ASP.NET MVC Controller для обработки файла на сервере. Вот link, показывающий, как загрузить файл с использованием типа содержимого многостраничной формы.

Смежные вопросы