因为input选择图片然后提交到服务器后会返回一个json数组的返回值,用传统的form表单提交图片,图片是能传上去了,但是没法接收到返回值。用的是angularjs框架,就想问一下可以把input选择到的图片放到formdata里传给服务器么?如果可以,具体要怎么实现?
因为input选择图片然后提交到服务器后会返回一个json数组的返回值,用传统的form表单提交图片,图片是能传上去了,但是没法接收到返回值。用的是angularjs框架,就想问一下可以把input选择到的图片放到formdata里传给服务器么?如果可以,具体要怎么实现?
<!DOCTYPE HTML>
<html lang="ru-RU">
<head>
<title></title>
<meta charset="UTF-8">
<script type="text/javascript" src="https://code.angularjs.org/1.4.4/angular.min.js"></script>
</head>
<body ng-app="myapp">
<div controller="upCtrl" >
<form id='editfile' method='post' enctype='multipart/form-data'>
<input name="text" type="text"/>
选择图片:<input name="avatar" id='upfile' type='file'/>
<button ng-click="upload()" > upload </button>
</form>
</div>
<script >
var app = angular.module('myapp', []);
app.service('fileUpload', ['$http', function ($http) {
this.uploadFileToUrl = function(file, uploadUrl){
var fd = new FormData(); //初始化一个FormData实例
fd.append('file', file); //file就是图片或者其他你要上传的formdata,可以通过$("input")[0].files[0]来获取
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
.success(function(){
})
.error(function(){
});
}
}]);
app.controller('upCtrl', function($scope,$fileUpload){
$scope.upload = function () {
console.log('upload');
var file=document.getElementById("upfile").files[0];
$fileUpload.uploadFileToUrl('upload.php',file);
};
});
</script>
</body>
</html>
为什么点击上传没反应?
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
直接用$http的post方法就可以做到,具体的可以参考这篇博客:Multipart/form-data File Upload with AngularJS