Fuf*_*ffu 7 asp.net asp.net-web-api
我想将文件发布到我的webapi.这不是问题,但是:
我希望我的行动看起来像这样:
public void Post(byte[] file)
{
}
Run Code Online (Sandbox Code Playgroud)
要么:
public void Post(Stream stream)
{
}
Run Code Online (Sandbox Code Playgroud)我想从类似的代码发布文件(当然,现在它不起作用):
<form id="postFile" enctype="multipart/form-data" method="post">
<input type="file" name="file" />
<button value="post" type="submit" form="postFile" formmethod="post" formaction="<%= Url.RouteUrl("WebApi", new { @httpRoute = "" }) %>" />
</form>
Run Code Online (Sandbox Code Playgroud)任何建议将不胜感激
vto*_*ola 13
最简单的例子就是这样的
[HttpPost]
[Route("")]
public async Task<HttpResponseMessage> Post()
{
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var provider = new MultipartFormDataStreamProvider(HostingEnvironment.MapPath("~/App_Data"));
var files = await Request.Content.ReadAsMultipartAsync(provider);
// Do something with the files if required, like saving in the DB the paths or whatever
await DoStuff(files);
return Request.CreateResponse(HttpStatusCode.OK);;
}
Run Code Online (Sandbox Code Playgroud)
没有同步版本,ReadAsMultipartAsync所以你最好还是玩.
更新:
如果您使用的是IIS服务器托管,则可以尝试传统方式:
public HttpResponseMessage Post()
{
var httpRequest = HttpContext.Current.Request;
if (httpRequest.Files.Count > 0)
{
foreach (string fileName in httpRequest.Files.Keys)
{
var file = httpRequest.Files[fileName];
var filePath = HttpContext.Current.Server.MapPath("~/" + file.FileName);
file.SaveAs(filePath);
}
return Request.CreateResponse(HttpStatusCode.Created);
}
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12519 次 |
| 最近记录: |