通过AngularJS实现图片上传及缩略图展示(读取文件内容)

AngularJS图片上传功能的实现(读取文件内容)

AngularJs实现Multipart/form-data 文件的上传(上传文件对象到后端)

//添加页面元素

<div style="clear:both;">
<img ng-src="{{imageSrc}}" class="image"/>
</div>
<div style="clear:both;">
<button class="file uploadLogo">
<input type="file" accept="image/jpeg" hosfile-model="myFile"/>
</button>
</div>

//添加页面对应的attribute directive

hospitalControllers.directive('hosfileModel', ['$parse', function ($parse) {
return {
restrict: 'A',
link: function(scope, element, attrs, ngModel) {
var model = $parse(attrs.hosfileModel);
var modelSetter = model.assign;
element.bind('change', function(event){
scope.$apply(function(){
modelSetter(scope, element[0].files[0]);
});
//附件预览
scope.file = (event.srcElement || event.target).files;//[0]
scope.getFile();
});
}
};

//controller里上传图片方法
$scope.getFile = function () {
console.log("file: " + JSON.stringify($scope.file));
if(/\.(jpg|jpeg)$/i.test($scope.file[0].name) && ($scope.file[0].size/1024) < 1024){
//读取图片内容显示在页面
fileReaderInHospital.readAsDataUrl($scope.file[0], $scope)
.then(function(result) {
console.log("image result: " + result);
$scope.imageSrc = result;
});

//上传LOGO图片
var fd = new FormData();
angular.forEach($scope.file,function(file){
fd.append('file',file);
})
$http({
method : 'POST',
url : '/imageserver/images',
data: fd,
headers:{
'Content-Type': undefined
},
transformRequest: angular.identity
})
.success(function(data, status, headers, config) {
if(status == 201){
console.log("上传LOGO图片成功");
//截取最后的图片uuid
var location = headers("Location");
var uuid = location.split("/").pop();
$scope.imageUuid = uuid;
console.log("image uuid: " + $scope.imageUuid);
}else{
Message.alert({
msg: '上传LOGO图片失败',
title: '上传LOGO图片',
btnok: '确定',
btncl:'取消'
});
}

})
.error(function(data, status, headers, config) {
Message.alert({
msg: '上传LOGO图片失败',
title: '上传LOGO图片',
btnok: '确定',
btncl:'取消'
});
});
}else{
$scope.imageSrc = "";
Message.alert({
msg: "LOGO只能是JPG或JPEG格式,不得超过1M!",
title:"上传失败提示",
btnok: '确定',
btncl:'取消'
});
}
};

//service

hospitalService.factory('fileReaderInHospital', ['$q', '$log', function($q, $log){
var onLoad = function(reader, deferred, scope) {
return function () {
scope.$apply(function () {
deferred.resolve(reader.result);
});
};
};

var onError = function (reader, deferred, scope) {
return function () {
scope.$apply(function () {
deferred.reject(reader.result);
});
};
};

var getReader = function(deferred, scope) {
var reader = new FileReader();
reader.onload = onLoad(reader, deferred, scope);
reader.onerror = onError(reader, deferred, scope);
return reader;
};

var readAsDataURL = function (file, scope) {
var deferred = $q.defer();
var reader = getReader(deferred, scope);
reader.readAsDataURL(file);
return deferred.promise;
};

return {
readAsDataUrl: readAsDataURL
};
}]);

angularjs上传图片的更多相关文章

  1. angularjs上传图片插件使用

    一. angurlajs 相关 远程 jar 包 https://code.angularjs.org/angular-1.0.1.min.js 二. 正文 1. html 部分 <!-- 需要 ...

  2. 三、angularjs上传图片

    上传图片需要引入插件ngFileUpload,使用bower安装方法: bower install ng-file-upload --save,安装后需要在命名app的名字js文件中注入,如下所示: ...

  3. angularjs上传图片和文件

    很简单: $scope.upload = function() { var f = $scope.myFile; var fd = new FormData(); var img = document ...

  4. angularJs中上传图片/文件功能:ng-file-upload

    原文技术交流:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/angularjs-ng-file-upload/ 在做网站的过程中难 ...

  5. ZH奶酪:AngularJS/JavaScript上传图片【PC端】

    [功能介绍] 类似与修改个人信息的时候,点击头像,就可以完成选择照片.上传照片等步骤达到替换头像的目的. [运行流程] (1)点击头像 (2)选择头像 (3)点击“完成”,上传头像 1.HTML图片部 ...

  6. ZH奶酪:ionic+angularJS+cordova(FileTransfer)上传图片【移动端】

    [功能介绍] 在开发应用的时候,经常会遇到需要上传图片的功能,比如修改个人资料的头像.本文介绍的是基于ionic框架,在移动端上传图片的功能. [功能流程] (1)点击页面上的头像,弹出一个对话框,选 ...

  7. angularjs input上传图片前获取图片的Size

    首先我们需要一个指令来追踪input的change.ngChage不适用input[file]. app.directive("fileread", [function () { ...

  8. Angularjs在线编辑器

    1.TextAngular: https://github.com/fraywing/textAngular textAngular是一个强大的Text-Editor/Wysiwyg 编辑器,用于An ...

  9. Angularjs web应用

    构建兼容浏览器的Angularjs web应用 背景 随着mvvm逐渐成熟,现在使用jQuery构建web应用已经显得过时了,而且使用jQuery需要编写更多的代码去控制dom的取值.赋值.绑定事件等 ...

随机推荐

  1. 「LINUX资料」Samba服务器(二)

  2. ZTOOLS HTTP&REGEXTEST&JSONS 工具包

    下载地址:点击下载

  3. 数位DP之奥义

    恩是的没错数位DP的奥义就是一个简练的dfs模板 int dfs(int position, int condition, bool boundary) { ) return (condition ? ...

  4. 在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题)

    在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题) 今天开始起在Chrome中调试,发现问题主要出在菜单栏(layout文件)中,google了 ...

  5. HTML CSS

    HTML CSS css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化.存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点.语法:styl ...

  6. linux下重置mysql的root密码

    # /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking & # my ...

  7. 【mysql】Infobright和mysql数据入库性能测试

    产生测试文件 测试文件部分内容如下: 产生测试文件代码: package foo; import java.io.File; import java.io.FileWriter; import jav ...

  8. office2016与visio2016不能“并存”的问题分析

    现象: 先安装了office2016专业增强版,再安装visio2016时出现提示 搜集了相关资料,可以通俗的理解为:已经安装了离线客户端版的office后,不能再安装在线版visio. 之后,将of ...

  9. 多个Jdk版本(转)

    window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法 本机已经安装了jdk1.7,而比较早期的项目需要依赖jdk1.6,于是同时在本机安装了jdk1.6和jdk1.7. 安装 ...

  10. Java创建WebService服务及客户端实现(转)

    简介 WebService是一种服务的提供方式,通过WebService,不同应用间相互间调用变的很方便,网络上有很多常用的WebService服务,如:http://developer.51cto. ...