AngularJS/JavaScript上传图片【PC端】

简介:

【功能介绍】

类似与修改个人信息的时候,点击头像,就可以完成选择照片、上传照片等步骤达到替换头像的目的。

【运行流程】

(1)点击头像

(2)选择头像

(3)点击“完成”,上传头像

1.HTML图片部分的代码(个人信息还会包含姓名[id="name"]、介绍[id="intro"]元素等)

<div>
    <img id="avatar"ng-src="{{avatar}}" ng-click="choosePicMenu()">
</div>
<input ng-hide="true" type="file" id="photoBtn" accept="image/*"onchange="picChange(event,'avatar')"/>

2.js核心代码

(1)选择图片

//点击图片,向id=“photoBtn”的元素发送click()事件,打开文件选择窗口,选择图片
$scope.choosePicMenu = function() { $('#photoBtn').click(); }
复制代码
//选择完图片之后,该input元素发生了change,激活onchange属性,执行picChange(event,'avatar')函数
//其中event指这个onchange事件,event.target指发生这个事件的元素,关于event更多介绍,请点:传送门

function
picChange(event,imgId){ var files = event.target.files; if(files && files.length >= 1){ var file = files[0];
     //loadImage是javaScript插件javascript-load-image(传送门)中的功能 loadImage.parseMetaData( file,
function (data) { if (!data.imageHead) { loadImage( file, function (img) { var URL = window.URL || window.webkitURL; var imgURL = img.toDataURL("image/png"); $('#'+imgId).attr('src', imgURL); $('#' + imgId).attr('data-change', 1); }, {maxWidth: 600, canvas: true} // Options ); return; } // Combine data.imageHead with the image body of a resized file // to create scaled images with the original image meta data, e.g.: // get orietation info. if (data.exif && data.exif[0x0112]) { var orientation = data.exif[0x0112]; loadImage( file, function (img) { var URL = window.URL || window.webkitURL; var imgURL = img.toDataURL("image/png"); $('#'+imgId).attr('src', imgURL); $('#' + imgId).attr('data-change', 1); }, {maxWidth: 600, canvas: true, orientation:orientation} // Options ); } else { loadImage( file, function (img) { var URL = window.URL || window.webkitURL; var imgURL = img.toDataURL("image/png"); $('#'+imgId).attr('src', imgURL); $('#' + imgId).attr('data-change', 1); }, {maxWidth: 600, canvas: true} // Options ); } } ); } }
复制代码

(2)上传图片

复制代码
//新建一个FormData对象
var
fd = new FormData();
//如果修改了图像,id=“avatar”的元素的“data-change”属性会为true
if($('#avatar').attr('data-change')){ var files = document.getElementById('photoBtn').files; if(files && files.length >= 1){ fd.append('ffile',files[0]);//把图像添加到formData对象中 } } //获取姓名、介绍等其他元素 var name = $('#name').val(); var intro = $('#intro').val(); if(name){ fd.append('name',name); } if(intro){ fd.append('introduction',intro); }
//使用XMLHttpRequest对象发送请求
var xhr = new XMLHttpRequest(); xhr.addEventListener("load", $scope.updateComplete, false); xhr.open("POST", "some url"); xhr.send(fd);
复制代码
复制代码
$scope.updateComplete = function(evt){
    var resp = evt.target.responseText;
    var respJson = $.parseJSON(resp);
    if(respJson.status == 0){
        console.log("success!");
    }else{
        console.log("fail");
    }
};
复制代码

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/4757439.html,如需转载请自行联系原作者

相关文章
|
6月前
|
JavaScript
vue.js+ jquery上传图片并回显
vue.js+ jquery上传图片并回显
|
JavaScript
js判断是否微信PC端打开内置浏览器
js判断是否微信PC端打开内置浏览器
|
2月前
|
移动开发 前端开发 JavaScript
JS配合canvas实现贪吃蛇小游戏_升级_丝滑版本_支持PC端和移动端
本文介绍了一个使用JavaScript和HTML5 Canvas API实现的贪吃蛇游戏的升级版本,该版本支持PC端和移动端,提供了丝滑的转向效果,并允许玩家通过键盘或触摸屏控制蛇的移动。代码中包含了详细的注释,解释了游戏逻辑、食物生成、得分机制以及如何响应不同的输入设备。
57 1
JS配合canvas实现贪吃蛇小游戏_升级_丝滑版本_支持PC端和移动端
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的全家桶的pc端仿淘宝系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的全家桶的pc端仿淘宝系统附带文章源码部署视频讲解等
31 2
|
JavaScript
js上传图片本地预览(整理)
js上传图片本地预览(整理)
|
JavaScript 前端开发
JavaScript实现手写签名,可触屏手写,支持移动端与PC端双端保存
JavaScript实现手写签名,可触屏手写,支持移动端与PC端双端保存
177 0
|
6月前
|
设计模式 前端开发 JavaScript
AngularJS是一款由Google收购的JavaScript结构框架
【5月更文挑战第2天】AngularJS是Google收购的JavaScript框架,用于构建动态Web应用,基于MVC模式,强调模块化和双向数据绑定。它简化了视图与模型的同步,通过语义化标签和依赖注入提升开发效率。适用于复杂单页面应用(SPA),但不适合DOM操作密集型或性能要求极高的场景。
70 0
|
6月前
|
JavaScript 前端开发
js的input标签上传图片并转为base64预览
js的input标签上传图片并转为base64预览
115 0
|
JavaScript
详解利用js调用PC端摄像头
详解利用js调用PC端摄像头
196 0
|
JSON 前端开发 API
layui框架实战案例(8):web图片裁切插件croppers.js组件实现上传图片的自定义截取(含php后端)
layui框架实战案例(8):web图片裁切插件croppers.js组件实现上传图片的自定义截取(含php后端)
567 0
下一篇
无影云桌面