如何接受一个文件上传和一些数据作为POST到.net REST API
本文关键字:数据 POST net API REST 何接受 一个 文件 | 更新日期: 2023-09-27 18:02:04
我使用。net WebAPI从我的。net应用程序中自托管一个REST API。我已经配置了一个控制器来接受标准的get和post,但是还有一种情况我还没有介绍。
在UI端,用户将填写一个表单,包括要上传的文件的路径,当用户单击submit时,这个data +文件应该通过其REST API发布到服务器。在我的控制器中为数据部分设计一个POST方法很容易,但是我们如何也接受文件上传作为该POST方法的一部分呢?
一个例子,我目前的方法接收post请求没有文件数据如下:
// public class EventsController : ApiController
public HttpResponseMessage PostEvent(EventRow e)
{
// some database work here.
if (e == null) { return BadRequest(e); }
var validResponse = Request.CreateResponse<EventRow>(System.Net.HttpStatusCode.Created, e);
string uri = Url.Link("API Default", new { id = e.Id });
validResponse.Headers.Location = new Uri(uri);
return validResponse;
}
您可以将文件转换为base64编码的字节数组,并将其作为要发送的JSON对象中的属性发送。不需要特殊的头文件,"application/json"和post就可以了。
关于使用javascript将文件转换为base64编码字节数组的堆栈溢出问题。
c#应该只是File.WriteAllBytes(),或者将字节数组存储在数据库或其他数据存储中。
HttpRequest.Files
应该包含上传的二进制文件,以供您随意使用。你可能需要在控制器的动作方法中手动访问它。
请注意,只有当HTTP请求的内容类型值为"multipart/form-data"时,才会填充文件集合。