angularjs - ASP.Net Web Api & Angularjs:多个文件上传
问题描述
我无法将上传的文件传递到控制器中。
这是我的控制器:
[System.Web.Http.HttpPost]
[System.Web.Http.Authorize(Roles = "Admin")]
public string UploadFile()
{
var file = HttpContext.Current.Request.Files.Count > 0 ? HttpContext.Current.Request.Files[0] : null;
if (file != null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(
HttpContext.Current.Server.MapPath("~/uploads"),
fileName
);
file.SaveAs(path);
}
return Helpers.JsonHelper.Stringify(new { success = true });
}
这是Angularjs:
var uploadFileToUrl = function (file, uploadUrl, progressCB) {
var token = $('input[name="__RequestVerificationToken"]').val();
var form = new FormData();
$(file).each(function (i, el) {
form.append('file', el, el.name);
})
$http.post(uploadUrl, form, {
headers: { "Authorization": "Basic " + token, "Content-Type": 'multipart/form-data' },
uploadEventHandlers: {
progress: progressCB
}
});
}
调用之前uploadFileToUrl
,文件被设置setViewValue()
为在上传(预览)之前显示图像。
所以指令中的某处有:
app.directive("selectNgFiles", function () {
return {
require: "ngModel",
link: function postLink(scope, elem, attrs, ngModel) {
elem.on("change", function (e) {
var files = elem[0].files;
ngModel.$setViewValue(files);
})
}
}
});
但我想这不会导致问题吧?
问题是它HttpContext.Current.Request.Files
总是空的,即使我已经将它设置在formData
. 为什么总是空的?
笔记
请从 Chrome 中查看附加的调试图像。
解决方案
推荐阅读
- flutter - Flutter Provider select - 如何处理复杂的返回类型,如 List 或 Map
- javascript - 添加 xml 缓冲区以形成数据
- mongodb - 从 mongodb 获取数据时如何设置默认值
- c++ - 我认为我的某些代码没有经过优化
- python - Unittest 使用 pythonnet 模拟 .NET
- arrays - 如何将来自 Google 表单的信息浓缩成统一且易于理解的内容?
- javascript - 在一个 NgRx 中组合效果
- python - 通过 sqlalchemy 烧瓶从我的组中拆分计数值
- c# - 用于登录 asp.net 核心 API 的 Nlog 集成
- python - 在 Telepot 中回复回拨查询