700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 使用angular.js实现异步图片加属性的上传

使用angular.js实现异步图片加属性的上传

时间:2022-11-13 21:32:09

相关推荐

使用angular.js实现异步图片加属性的上传

记录是为了更好的成长!

在做一个前后端分离的SSM项目中,需要实现图片的上传,花了好些时间,简单记录一下,供参考:

1、这是我的html页面中表单中的代码,使用的是angular.js进行绑定属性

<form class="form-horizontal" ><input ng-model="entity.bankAccount" type="text" class="form-control"><select ng-model="entity.bankName" type="text" class="form-control"><option selected value="">请选择</option><option ng-repeat="entity in banktypelist" value="{{entity.bankName}}">{{entity.bankName}}</option></select><input ng-model="entity.bankCardNo" type="text" class="form-control" placeholder="请输入卡号"><select ng-model="entity.cId" type="text" class="form-control"><option selected value="">选择</option><option ng-repeat="entity in companylist" value="{{entity.cId}}">{{ame}}-{{entity.cMark}}</option></select><input id="file" name="pic" type="file" class="form-control" onchange="getPhotoSize(this)"><br><img id="imghead" alt="" src="/admin/img/logo.png" width="150px" height="150px"/><button type="submit" class="btn btn-default" ng-click="save()">保存</button><button type="reset" class="btn btn-default">重填</button>

</form>

2、angular.js的controller中对应的代码

AngularJS默认的'Content-Type'application/json,通过设置'Content-Type': undefined,这样浏览器不仅帮我们把Content-Type设置为

multipart/form-data,还填充上当前的boundary;

通过设置transformRequest: angular.identityanjularjs transformRequest function将序列化我们的formdata object,也可以不添加

$scope.save=function(){ var file = document.querySelector('input[type=file]').files[0]; //获取上传到文件var fd = new FormData();//封装提交的数据,一并追加到FormData中fd.append('pic', file); fd.append("bankAccount",$scope.entity.bankAccount);fd.append("bankName",$scope.entity.bankName);fd.append("bankCardNo",$scope.entity.bankCardNo);fd.append("cId",$scope.entity.cId);$http({method:'POST',//http请求的方法,如get/posturl:"/bankinfo/add.do", //请求地址data:fd, //请求的数据,会作为请求体数据被post发送headers: {'Content-Type':undefined},//使用angular上传一定要加上这一句,不然传给后台的是空的。transformRequest: angular.identity }).success( function (response){//上传成功的操作if(response.success){alert("上传成功");}});}

3、java中controller的代码

@RequestMapping("/add")public Result add(BankInfo bankInfo, @RequestParam(value = "pic", required = true) MultipartFile pic,HttpServletRequest request) {System.out.println(bankInfo);//打印出对象信息System.out.println(pic.getOriginalFilename()); //打印出图片名//获取路径String path = request.getSession().getServletContext().getRealPath("/admin/payimgs/");//获取原来的文件名String oldName = pic.getOriginalFilename();//截取获得原来的文件名后缀String ext = oldName.substring(oldName.lastIndexOf("."));String newName = UUID.randomUUID().toString()+ext;File f = new File(path,newName);try {//输出到文件夹中 pic.transferTo(f);} catch (IllegalStateException e) {// TODO Auto-generated catch block e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}return new Result(true,"增加成功"); }

以上内容代表个人观点,仅供参考,不喜勿喷。。。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。