【发布时间】:2016-09-15 13:56:05
【问题描述】:
我正在尝试将文件连同一些元数据上传到我使用 ng-file-upload 和 Angular 创建的 WebApi 服务。我按预期获得了文件名和字节,但我也无法获得我传递的元数据。这是我在 Angular 方面所做的事情
Upload.upload({
url: '/api/FileStorage/AddContent' + location.search,
data: {file: files, year: vm.year }
})
还有 WebApi 方面
var streamProvider = new CustomMultipartFileStreamProvider();
IEnumerable<HttpContent> parts = null;
Task.Factory
.StartNew(() => parts = Request.Content.ReadAsMultipartAsync(streamProvider).Result.Contents,
CancellationToken.None,
TaskCreationOptions.LongRunning, // guarantees separate thread
TaskScheduler.Default)
.Wait();
var customData = streamProvider.CustomData;
这里我使用 MultiStreamProvider 来获取文件,这是该提供者的核心
public override Task ExecutePostProcessingAsync()
{
foreach (var file in Contents)
{
var parameters = file.Headers.ContentDisposition.Parameters;
var filename = GetNameHeaderValue(parameters, "filename");
var year = GetNameHeaderValue(parameters, "year");
}
return base.ExecutePostProcessingAsync();
}
我能够毫无问题地获得文件名,但永远无法获得年份。这是我查看参数变量时调试器中的值
如您所见,名称是“name”,值是“year”,而我希望名称是“year”,值是“2016”或我传入的任何值。我在做什么这里错了,我如何获取包含在对 Api 的同一次调用中的元数据?
【问题讨论】:
标签: angularjs asp.net-web-api http-post ng-file-upload