通过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. Vim找不到配色文件的解决方法

    Vim新出了8.0,又成功的勾起了我的好奇心. 重新从零开始配置,结果第一步设置配色主题就没过,好丢人-- 提示找不到evening.vim配色文件,于是上网查了一下,有说改环境变量的,又说改这个改那 ...

  2. Windows下面如何建立多个Django虚拟环境

    Linux 安装请见另一篇博客 http://www.cnblogs.com/zhaoyingjie/p/6180758.html 1.安装 virtualenv 2.安装virtualenvwrap ...

  3. Razor 视图引擎 – ASP.NET MVC 4 系列

           Razor 视图引擎是 ASP.NET MVC 3 开始扩展的内容,并且也是默认视图引擎.        Razor 通过理解标记的结构来实现代码和标记之间尽可能顺畅的转换.下面的例子演 ...

  4. 简介 – ASP.NET MVC 4 系列

           正所谓好记性不如烂笔头,尤其是技术类书籍在阅读后,时间久了一定会忘记.而重新翻阅整本书也较为低效,遂以博客记录阅读摘要以供日后查阅.本系列文章均摘要自 Wrox 红皮书[ASP.NET ...

  5. centos6.5为tengine安装php 5.6支持

    1.到php官网下载最新的php版本 http://php.net/ 我下载的是php-5.6.28.tar.bz2 2.编译安装 2.1安装依赖 2.1.1 解决libxml2和xml2-confi ...

  6. ETL利器Kettle实战应用解析系列三 【ETL后台进程执行配置方式】

    本文主要阅读目录如下: 1.简介Kettle的Kitchen和Span 2.命令行调度任务配置方式 3.后台进程配置运行方式 4.Windows任务设置 5.Demo下载 1.简介Kettle的Kit ...

  7. 关于FPGA学习路线

    1.参考FPGA厂商的参考资料,将某系列FPGA所有芯片资料下载下来,有针对性的做参考. 2.参考FPGA厂商开发板以及相应的参考设计,在开发板里有众多的外围接口电路,基本涵盖了常用的应用场合.同时也 ...

  8. WinForm中使用XML文件存储用户配置及操作本地Config配置文件(zt)

    因项目中采用CS结构读取Web.config文件,故参照一下的连接完成此功能,在此感谢原作者! 原文地址: http://www.cnblogs.com/zfanlong1314/p/3623622. ...

  9. js随机颜色生成

    return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).slice(-6);

  10. Web 前端开发学习之路(入门篇)

    字数1374 阅读4622 评论0 喜欢49 以前学习过一段时间的web前端开发,整理了一些我看过的/我认为比较好的学习资料(网站.书籍).不要问我为啥没有进阶版,我只是一条产品汪而已,求轻喷.== ...