【发布时间】:2018-09-12 12:09:00
【问题描述】:
我的 WebAPI 方法已准备好接受文件,如下所示: (例如 URI“https://localhost:44397/api/uploadfile”
[Route("api/[controller]")]
[ApiController]
public class UploadFileController : ControllerBase
{
[HttpPost]
public async Task<IActionResult> Post([FromForm] IFormFile file)
{
}
}
我正在使用控制台应用程序将文件发送到此 API 方法,以下是我的代码:
public static void Send(string fileName)
{
using (var client = new HttpClient())
using (var content = new MultipartFormDataContent())
{
client.BaseAddress = new Uri("https://localhost:44397");
var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
var index = fileName.LastIndexOf(@"\");
var fn = fileName.Substring(index + 1);
fs.Position = 0;
var contentfile = new StreamContent(fs);
content.Add(contentfile, "file", fn);
var result = client.PostAsync("/api/uploadfile", content).Result;
}
}
我还检查了其他客户端(例如 Postman),但它也在那里失败了(所以这似乎是服务器端的问题,而不是控制台应用程序)。
不确定我在这里做错了什么。每当我检查我的 WebAPI 方法文件参数时始终为空。
谁能帮我找到解决办法?我尝试搜索博客无济于事。我可能在这里做一些幼稚的事情。
【问题讨论】:
-
您需要隔离问题是在客户端(控制台)端还是服务器(Web api)端。要确认这一点,请告诉我们您是否能够从其他客户端(例如网络浏览器或邮递员)发布文件信息?如果没有,请将控制台应用程序放在一侧,并且在您让另一个客户端工作之前不要触摸它。然后回到控制台应用程序。
-
@mjwills 感谢您的建议。实际上,我可以在我的 Request.Form.Files 属性中看到文件,但我的参数 IFormFile 始终为空。那就是我试图修复的地方。似乎问题出在 [ApiController] 属性上。当我删除它时,它起作用了。
标签: c# .net-core asp.net-core-webapi