2017-08-31 19 views
1

我想在asp.net核心web api上传一个文件。为此,我有一个Web应用程序调用我的web api。获取Request.Form.Files总是空的在asp.net核心web api

这里是Web应用程序代码中,我附上文件

using (var client = new HttpClient()) 
{ 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Sample"); 

    using (var content = new MultipartFormDataContent()) 
    { 
     var fileContent2 = new StreamContent(firmwareImage.InputStream); 
     fileContent2.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
     { 
      FileName = firmwareImage.FileName 
     }; 
     content.Add(fileContent2); 

     var result = await client.PostAsync(serviceUrl, content); 
     var response = await result.Content.ReadAsStringAsync(); 
    } 
} 

这里是attched内容的屏幕截图,同时调试。抱歉调试值部分模糊的图像。

enter image description here

现在的web API我被

var files = Request.Form.Files; 

接收到这个请求,但我总是得到空文件。计数始终为零。以下是同一个请求的屏幕截图。 enter image description here

我在做什么错了,为什么我没有得到附加文件在web API?

+2

您是否尝试将内容类型标题设置为multipart/form-data? –

+0

是的,但该代码无法为我工作。所以我已经用multipart/form-data改变了api请求代码。谢谢。 – kandarp

回答

0

我无法从上面的代码发布图像,所以我已经尝试了下面的代码,它工作正常。

HttpClient httpClient = new HttpClient(); 
MultipartFormDataContent form = new MultipartFormDataContent(); 

FileStream fs = System.IO.File.OpenRead("your file path"); 
var streamContent = new StreamContent(fs); 

var imageContent = new ByteArrayContent(streamContent.ReadAsByteArrayAsync().Result); 
imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data"); 

form.Add(imageContent, "image", Path.GetFileName("your file name")); 
var response = httpClient.PostAsync("apiurl", form).Result; 
相关问题