我正在使用.NET WebAPI从我的.NET应用程序自我托管REST API。我已经配置了一个控制器来接受你的标准GET和POST,但有一个案例我还没有介绍。
在UI方面,用户将填写表单,包括要上载的文件的路径,并且当用户单击提交时,此数据+文件应通过其REST API发布到我的服务器。在我的控制器中为数据部分设计一个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;
}
答案 0 :(得分:3)
您可以将文件转换为base64编码的字节数组,并将其作为您要发送的JSON对象中的属性发送。不需要特殊的标题,&#34; application / json&#34;和帖子会很好。
关于using javascript to convert a file to a base64 encoded byte array的堆栈溢出问题。
C#应该只是File.WriteAllBytes(),或者将字节数组存储在数据库或其他数据存储中。
答案 1 :(得分:1)
HttpRequest.Files
应该包含您要使用的上传二进制文件。您可能需要在Controller的Action Method中手动访问它。
请注意,仅当HTTP请求内容类型值为&#34; multipart / form-data&#34;时才会填充文件集合。