我在尝试使用angularjs控制器推送数据时遇到问题。但是我所做的(IFormFile文件)总是空的。只有一些使用razor语法的示例,但是没有使用angular或jquery的示例。
HTML:
<form class="form-body" enctype="multipart/form-data" name="newFileForm" ng-submit="vm.addFile()"><input type="file" id="file1" name="file" multiple ng-files="getTheFiles($files)"/></form>
指示:
(function() {
'use strict';
angular
.module('app')
.directive('ngFiles', ['$parse', function ($parse) {
function fn_link(scope, element, attrs) {
var onChange = $parse(attrs.ngFiles);
element.on('change', function (event) {
onChange(scope, { $files: event.target.files });
});
};
return {
link: fn_link
};
}]);
})();
控制者
var formdata = new FormData();
$scope.getTheFiles = function ($files) {
angular.forEach($files, function (key, value) {
formdata.append(key, value);
});
};
vm.addFile = function () {
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader("Content-Type", "undefined");
xhr.send(formdata);
}
ASP.NET核心WebAPI:
[HttpPost]
public async Task<IActionResult> PostProductProjectFile(IFormFile file)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
....
return ...;
}
我还尝试过使用formdata,因为它是在您使用razor语法发布时构造的。像这样:
dataService.addFile(formdata, {
contentDisposition: "form-data; name=\"files\"; filename=\"C:\\Users\\UserName\\Desktop\\snip_20160420091420.png\"",
contentType: "multipart/form-data",
headers: {
"Content-Disposition": "form-data; name=\"files\"; filename=\"C:\\Users\\UserName\\Desktop\\snip_20160420091420.png\"",
'Content-Type': "image/png"
},
fileName: "C:\\Users\\UserName\\Desktop\\snip_20160420091420.png",
name: "files",
length : 3563
}
也代替formData提供原始文件,如我在评论中所写。但是仍然没有任何反应
这是使用angularjs的方法:
vm.addFile = function () {
var fileUpload = $("#file").get(0);
var files = fileUpload.files;
var data = new FormData();
for (var i = 0; i < files.length ; i++) {
data.append(files[i].name, files[i]);
}
$http.post("/api/Files/", data, {
headers: { 'Content-Type': undefined },
transformRequest: angular.identity
}).success(function (data, status, headers, config) {
}).error(function (data, status, headers, config) {
});
}
在网络Api中:
[HttpPost]
public async Task<IActionResult> PostFile()
{
//Read all files from angularjs FormData post request
var files = Request.Form.Files;
var strigValue = Request.Form.Keys;
.....
}
或像这样:
[HttpPost]
public async Task<IActionResult> PostFiles(IFormCollection collection)
{
var f = collection.Files;
foreach (var file in f)
{
//....
}
}
问题内容: 我正在创建一个新的Laravel项目,并且在调试表单请求的错误时,我注意到我的ErrorBag始终为空。即使在控制器返回时。我尝试了在互联网上找到的所有解决方案,但没有任何效果。 创建与作曲家新的项目,即使(如描述这里)使所有的字段为空时,我的开箱身份验证系统中有一个空的错误袋。 是的,所有路由都使用中间件组网络。 有什么想法导致此问题吗?(Session :: put()和Sessi
下面是片段。请注意,我已经恢复到以前的提交,因此丢失了最近的修改,但请查看我编写的代码,然后才注意到始终等于0() 以下是当检测到活动后按: 以下是NoteActivity接收结果调用的方式。 null 我在我的项目上浪费了很多重要的时间,只是想知道是什么使resultCode和requestCode的值丢失了我发送的值。 任何帮助和指导都将不胜感激。非常感谢!
我的测试类看起来像这样 在设置方法中,wac 始终为空。从spring boot文档中,总是创建一个模拟。 所以我希望它会在上面的代码中自动绑定,但这不会发生。 有人可以告诉我在这种情况下如何创建,以便它不像我的情况那样为空吗? 我正在运行spring boot测试,从带有springboot注释的类中调用它们。 测试(springboottest)和调用类(springboot)应用程序都位于下
我有两个不同的活动,在第一个活动中,我在一些EditText中输入一些信息,然后进入第二个活动,但当我返回时,第一个活动中EditText上的文本消失了。 以下是第一个活动的OnCreate() 我正在使用onSaveInstanceState方法保存信息 在进行调试时,我可以看到确实在onSaveInstanceState方法中填充了savedInstanceState捆绑包,但在OnCreat
我将Spring Boot版本='1.4.0.rc1'与Spring Boot Stormpath 1.0.2一起使用。 我试图使用多部分文件上传,但MultipartFile在控制器中总是为空。 这是控制器,在下面的代码中,总是成功,总是失败: 我的集成测试使用改型: 我使用自动配置,所以我唯一的自定义配置类配置StormPath: 更新:这是传出请求。我不确定如何在多部分解析器本身中启用日志记
问题内容: 我正在编写一个C#ASP.Net MVC应用程序,供客户端将文件发布到其他服务器。我正在使用通用处理程序来处理从客户端到服务器的发布文件。但是在我的处理程序中,System.Web.HttpContext.Current.Request.Files始终为空(0个计数)。 表格代码: 处理程序: 请帮我。谢谢。 问题答案: 最后,我发现了问题。 由于某些原因,控制器中的代码永远无法正常工