- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图使用angular js和spring mvc上传multiple =“true”的多个输入类型文件,但我从服务器收到异常是“请求被拒绝,因为没有找到多部分边界”
在这里,我将把我的代码放在下面
我的jsp是
<html ng-app="myApp">
<body>
<div ng-controller="controller">
<input type="submit" name="submit" value="add" ng-click="add();" />
<form name="form" id="form" ng-submit="submitRecord(blog)" enctype="multipart/form-data" >
<div id="outerdiv" name="outerdiv">
</div>
</form>
</div>
</body>
</html>
'use strict';
var App = angular.module('TechnoBlogs', ['ngRoute','ui.router']);
var $injector = angular.injector(['ng']);
App.config(['$httpProvider', function ($httpProvider) {
/*$httpProvider.defaults.headers.post['Content-Type'] = 'application/json; charset=UTF-8';*/
}],['$routeProvider',function($routeProvider){
$routeProvider.
when('/create', {
templateUrl: '/',
controller: 'controller'
});
}]);
var currentg1=0;
var controller = function($scope,$http,fileService){
$scope.blog = [];
/*var currentg1=0;*/
$scope.blog.desc=[];
$scope.blog.desccode=[];
$scope.blog.descimg=[];
$scope.add=function(){
var $div = angular.element("<br><div><label id='desc["+currentg1+"]' for='desc["+currentg1+"]'>Description"+currentg1+"<span style='color: red;''>*</span></label><textarea rows='3' cols='6' id='desc["+currentg1+"]' name='desc["+currentg1+"]' ng-model='blog.desc["+currentg1+"]' required='required'></textarea> </div><br><div><label id='desccodeL["+currentg1+"]' for='desccodeL["+currentg1+"]''>Code "+currentg1+"</label><textarea rows='3' cols='6' id='desccode["+currentg1+"]' name='desccode["+currentg1+"]' ng-model='blog.desccode["+currentg1+"]''></textarea></div><div><label id='descimgL["+currentg1+"]' for='descimgL["+currentg1+"]'>Image "+currentg1+"</label><input type='file' id='descimg["+currentg1+"]' class='file' name='descimg["+currentg1+"]' my-file-upload='descimg["+currentg1+"]' multiple/></div>");
var e=document.getElementById("outerdiv");
angular.element(e).append($div).injector().invoke(function($compile) {
var scope = angular.element($div).scope();
$compile($div)(scope);
});
currentg1++;
};
$scope.submitRecord=function(blog){
var fd = new FormData();
var files=[];
for(var i=0;i<currentg1;i++)
{
files[i] = fileService.getFile("descimg["+i+"]");
console.log("files["+i+"] ---> "+files[i]);
}
fd.append("files",files);
alert(fd);
console.log("--->>> "+files);
$http.post("saveblog",fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
}).success(function(){
alert("success");
})
};
};
App.service('fileService', function () {
var file = {};
var fileService = {};
fileService.getFile = function (name) {
return file[name];
};
fileService.setFile = function (newFile, index, name) {
if (index === 0 && file[name] === undefined)
file[name] = [];
file[name][index] = newFile;
};
return fileService;
})
App.directive('myFileUpload', function (fileService) {
return function (scope, element, attrs) {
element.bind('change', function () {
var index;
var index_file = 0;
for (index = 0; index < element[0].files.length; index++) {
fileService.setFile(element[0].files[index], index_file, attrs.myFileUpload);
index_file++;
}
index_file = 0;
});
}
});
@RequestMapping(value="/saveblog", method=RequestMethod.POST, headers = "'Content-Type': 'multipart/form-data'")
public void saveblog(MultipartHttpServletRequest request, HttpServletResponse response)
{
System.out.println("in multipart ");
Iterator<String> itr=request.getFileNames();
MultipartFile file=request.getFile(itr.next());
String fileName=file.getOriginalFilename();
System.out.println(fileName);
}
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="2097152" />
</bean>
HTTP/1.1 404 Not Found
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 949
POST /technoblogs/blog/saveblog HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 209
Accept: application/json, text/plain, */*
Origin: http://localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7uIEu9ax8IY8nCde
Referer: http://localhost:8080/technoblogs/blog/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: JSESSIONID=61816E4AB7F6905F688755CF22BC16FF
最佳答案
也许这个 link会帮助你。您缺少的是内容标题。
从链接的答案:
Angular will POST as JSON even if you set the Content-Type to the correct value multipart/form-data. So we must transform our request manually to the correct data. … [using] a transformRequest function that does nothing as returning your original FormData … like this:
$http({
method: 'POST',
url: 'newDocument',
headers: {'Content-Type': 'multipart/form-data'},
data: formData,
transformRequest: function(data, headersGetterFunction) {
return data; // do nothing! FormData is very good!
}
})
关于angularjs - 请求被拒绝,因为在 angularjs 和 spring mvc 中没有找到多部分边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31089824/
是否有在非 AngularJS 页面内初始化 AngularJS 应用程序的最佳实践方法?我正在向现有网页添加新功能,需要传入一个参数。具体来说,有一组选项卡,一个新选项卡将启动一个 Angular
找不到这两者之间的区别。 保留其中任何一个来引导我的 Angular 应用程序是否有意义? angular.bootstrap(document,['myApp']); 或者 angularAMD.b
我试图理解 Packpub 的书附带的示例 AngularJS 应用程序。 app.js文件在 client/src/app 下定义文件夹,它的模块定义看起来像 angular.module('app
Angularjs 具有用于表单验证和显示错误消息的强大基础设施。但是,我处于必须在特定场景中向用户显示警告消息的情况。这是我的简单表格的图表 该表单在两个字段上都应用了必需和模式验证。除了此验证之外
我在重试功能正常工作时遇到了一些麻烦,希望能获得一些帮助。我有一个要调用的$ resource,直到出现成功情况或超过最大重试次数为止。 我似乎遇到的问题是,在我的重试函数中,我正在调用另一个prom
我目前正在开发一个 AngularJS 应用程序,我遇到了以下障碍。 当用户提交时,我们有一个 login 页面,我们调用一个 web api 并对用户进行身份验证,我们目前正在使用 claims 身
当范围更新时,指令的属性不会改变,它们仍然保持初始值。我在这里缺少什么? HTML works great works: {{foo}} Javascript (基于首页上的 A
我正在使用 Zurb 的 Foundation 框架修改应用程序以实现响应性和 AngularJS。存在数据显示在带有 ... 的表中的错误有 是根据 Foundation 的响应规则隐藏/显示的。不
在过去的三天里,我一直在搜寻互联网,试图弄清楚当angular注意到div的宽度发生变化时如何使指令运行。 我不断看到相同的示例,说明如何实现此目标,但是它们对我不起作用,我也不知道为什么。 我回到一
我正在使用以下代码尝试汇总 在 Angular ,这在整个作品中,但是小于 0.5 的数字四舍五入为 0。我想 向上取整 每个数字到下一个整数。例如 0.02 应四舍五入为 1 {{((data.Vi
我目前正在尝试以一种能够适当扩展到企业级别的方式来组织我的 Angular 应用程序。但是我发现似乎过度依赖框架内的命名约定,并且试图避免命名冲突是一个真正的问题。 例如,当定义任何 constant
我正在阅读 AngularJS 基础知识,并且喜欢在我的页面中使用它的绑定(bind)功能。所以我可以定义可以在 View 中显示的数据,可以对数据进行更改,以便在 View 中更改它而无需担心。 在
在父 Controller 范围内,我定义了 selectedItem设置为“x”。然后在子范围内,我定义了selectedItem使用 ngModel:
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 5年前关闭。 Improve this questi
如果2个条件为真,我试图将一个特定的类应用于li元素,因此我编写了以下代码,但似乎无法正常工作 ng-class="{current:isActive('/'), loginStatus: false
请看看朋克。 http://plnkr.co/edit/DuTFYbLVbPkCIvRznYjG?p=preview ng-pattern regEx不适用于输入文本字段。 仅在需要验证的情况下才能正
我正在为iOS + Android构建AngularJS(1.x)和Ionic/Cordova移动应用程序。我想在登录页面上添加/创建“深层链接”,以便在我向新用户发送“确认您的电子邮件”电子邮件时,
angularjs 中服务(或工厂)的生命周期是什么,何时重新初始化? 最佳答案 当 Angular 启动时,它会将服务的构造函数附加到关联的模块上。这种情况发生一次。 angular .modu
我对 Angular 很陌生,所以希望我知道的足够多,可以问什么似乎是合理的设计问题。 我正在通过 Angular 绘制一些数据,并且正在使用 $resource。在将 Angular 引入项目之前,
我需要在我的 angular-breeze 应用程序中使用国家/地区下拉菜单,我尝试了以下操作: https://github.com/banafederico/angularjs-country-s
我是一名优秀的程序员,十分优秀!