【发布时间】:2016-07-04 09:07:17
【问题描述】:
我有一个场景,我想通过 JSON 对象将文件流从客户端(我正在使用 AngularJS)上传到 asp .net 中的 Web Api。 所以 JSON 对象中会有一些字段,其中一个字段是文件流。我如何创建一个 JSON 对象并将其发送到 web api,从而在 api 端将模型绑定到我的模型。
$scope.fileUploadData = {
TextId: 304765,
DocumentId: 0,
PatientId: 166158,
file://This is my file stream property in JSON
}
public ApiActionResult CreateDocument(DocumentVM model)
{
//Some logic here.....
}
// DocumentVM class will be as follows
public class DocumentVM
{
long TextId;
long DocumentId;
long PatientId;
Stream file;
}
请提供示例代码 sn-ps 如何实现它。
我试过的:
我用谷歌搜索了很多,但我发现了使用多部分表单数据之类的解决方案。在其中附加 JSON 和文件流,然后将其发送到 web api。我使用以下逻辑来提取多部分表单数据。
public async Task<ApiActionResult> CreateDocument()
{
MultipartFormDataStreamProvider provider =
new MultipartFormDataStreamProvider(Path.GetTempPath());
var result = await Request.Content.ReadAsMultipartAsync(provider);
var model= result.FormData["Metadata"];
var fileData = result.FileData;//How it will retriev the file data
}
【问题讨论】:
-
使用简单的 json 对象,您不能流式传输文件。您需要创建多部分请求。在 javascript 端,您需要创建 File 对象,该对象将使用多部分请求传递给服务器。
-
那么除了多部分表单数据之外没有其他选项可以将流发送到API?
标签: angularjs json asp.net-web-api2