通过AngularJS实现图片上传及缩略图展示示例,废话不多说了,具体如下:
从项目中截出的代码
HTML部分:
JS部分:
$scope.img_upload = function(files) { //单次提交图片的函数
$scope.guid = (new Date()).valueOf(); //通过时间戳创建一个随机数,作为键名使用
$scope.reader.readAsDataURL(files[0]); //FileReader的方法,把图片转成base64
$scope.reader.onload = function(ev) {
$scope.$apply(function(){
$scope.thumb[$scope.guid] = {
imgSrc : ev.target.result,//接收base64
}
});
};
var data = new FormData(); //以下为像<a href="https://www.f2er.com/tag/houtai/" target="_blank" class="keywords">后台</a>提交<a href="https://www.f2er.com/tag/tupian/" target="_blank" class="keywords">图片</a>数据
data.append('image',files[0]);
data.append('guid',$scope.guid);
$http({
method: 'post',url: '/comm/test-upload.<a href="https://www.f2er.com/tag/PHP/" target="_blank" class="keywords">PHP</a>?action=success',data:data,headers: {'Content-Type': undefined},transformRequest: angular.identity
}).success(function(data) {
if (data.result_code == 'SUCCESS') {
$scope.form.image[data.guid] = data.result_value;
$scope.thumb[data.guid].status = 'SUCCESS';
console.log($scope.form)
}
if(data.result_code == 'FAIL'){
console.log(data)
}
})
};
$scope.img_del = function(key) { //删除,删除的时候thumb和form里面的图片数据都要删除,避免提交不必要的
var guidArr = [];
for(var p in $scope.thumb){
guidArr.push(p);
}
delete $scope.thumb[guidArr[key]];
delete $scope.form.image[guidArr[key]];
};
$scope.submit_form = function(){ //图片选择完毕后的提交,这个提交并没有提交前面的图片数据,只是提交用户操作完毕后,
到底要上传哪些,通过提交键名或者链接,后台来判断最终用户的选择,整个思路也是如此
$http({
method: 'post',url: '/comm/test.PHP',data:$scope.form,}).success(function(data) {
console.log(data);
})
};
}]);
最后的效果如图: