通过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. python之列表、字典、集合

    列表 name = ["Alex","Eenglan","Eric"] print(name[0]) print(name[1]) prin ...

  2. 有关默认相机转VR相机

    呃...15年开篇~ 去年想写一个有关默认相机转VR相机的脚本,当时没写完,今天不小心翻到并写完了,而且思路也和原来完全不一样了,增加了是否删除原相机与是否转换所选相机的选项. 由于国内VR版本比较混 ...

  3. (转) WTF is computer vision?

        WTF is computer vision? Posted Nov 13, 2016 by Devin Coldewey, Contributor   Next Story   Someon ...

  4. EX:The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

    EX:The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secu ...

  5. DataSet,DataTable与DataRow的复制方法

    DataSet 对象是支持 ADO.NET的断开式.分布式数据方案的核心对象 ,用途非常广泛.我们很多时候需要使用其中的数据,比如取得一个DataTable的数据或者复制另一个DataTabe中的数据 ...

  6. MySql中常用的hint

    对于经常使用Oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在MySQL里,也有类似的hint功能.下面介绍一些常用的. 强制索引 FORCE ...

  7. 5G扫盲

    打开手机,连接wifi,如果想要下载一部自己喜欢的高清电影,一般需要半小时左右的时间.5G时代,你可能花费不到1分钟就能完成这些操作.更快的网速.更多的应用意味着更广阔的市场空间,也意味着更激烈的市场 ...

  8. AngularJs之$scope对象(作用域)

      一.作用域 AngularJs中的$scope对象是模板的域模型,也称为作用域实例.通过为其属性赋值,可以传递数据给模板渲染. 每个$scope都是Scope类的实例,Scope类有很多方法,用于 ...

  9. es6 const

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. TP中的session和cookie

    session:1.session('name','value');  //设置session2.$value = session('name');  // 获取所有的session 3.2.2版本新 ...