ZH奶酪: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”属性会为trueif($(‘#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");
    }
};
时间: 2024-10-24 05:11:47

ZH奶酪:AngularJS/JavaScript上传图片【PC端】的相关文章

JavaScript判断移动端及pc端访问不同的网站

http://www.html-js.com/article/2677 现在很多网站都是分为两个版本,一个pc端的一个移动端的(响应式除外),针对这两个版本,就需要对访问的设备进行判断,如果是pc,就直接访问pc网站,否则就访问移动端网站. 对于这个问题可以通过判断UA来解决,前端js可以判断,后端判断也行,这里我们主要讨论的是如何通过js来处理. 假如我们有一个网站,pc端通过www.test.com访问,而移动端通过m.test.com来访问.我们需要做的就是当移动端访问www.test.c

网站自动识别PC端或者移动端

平时在开发中经常会遇到这样的需求,除了开发PC端之外,还会同时开发移动端.对于简单的页面,可以使用bootstrap之类的框架实现响应式页面,可是当页面很复杂的时候,就需要开发一个移动端页面,一个PC端页面.这个时候,就会遇到这样的需求,想要访问同样的网址,然后根据设备不同显示不同的页面.之前一直想招相关的资料没有找到,到后来发现是我百度搜索的水平不行,心好累~~~下面就是我找到的通过js实现的浏览器判断. <script type="text/javascript"> v

Macaca自动化测试之PC端测试

Macaca是一套完整的自动化测试解决方案.由阿里巴巴公司开源: http://macacajs.github.io/macaca/ 特点: 同时支持PC端和移动端(Android.iOS)自动化测试. 支持JavaScript(Node.js).Java.Python. 本篇文章将介绍如何使用该工具时行PC端自动化测试. Install Macaca 1.Macaca由Node.js开发,所以需要安装Node.js. https://nodejs.org/en/ 2.安装Node.js完成.

js判断移动端与pc端

这里介绍下使用device.js插件来判断移动端设备 地址:https://github.com/matthewhudson/device.js 示例: if(device.mobile()){ window.location.href = "移动端地址"; //alert("移动端"); } else { window.location.href = "PC端地址"; //alert("PC端"); } 更多设备判断如下表格

在pc端集成地图功能(一)

在pc端做人员调度功能,用到地图.看了一点高德地图API,由于手机端用的是百度地图,现在需要改用百度地图.下面把看的高德地图一点点成果记录下来: 1.在高德地图开放平台(http://lbs.amap.com/)注册帐号,我注册的个人帐号免费的 2.进入控制台,首先创建一个应用,然后在刚创建的应用上添加新key,按照自己的需求选择对应的选项就行了,这里不做详细说明,然后就有了 key 值 3.选择你所需要的API,我选的是JavaScript API,如下图 左侧有很多方法,直接复制到你的页面里

js判断游览器是移动端还是PC端

js判断网页游览器是移动端还是PC端 1 <script type="text/javascript"> 2 function browserRedirect() { 3 var sUserAgent = navigator.userAgent.toLowerCase(); 4 var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; 5 var bIsIphoneOs = sUserAgent.match(/

PC端与移动端网站的识别

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

移动端访问PC端网页时跳转到对应的移动端网页

不想通过CSS自适应在PC端和移动端分别显示不同的样式,那么只能通过在移动端访问PC端网页时跳转到对应的移动端网页了,那么怎么跳转呢,网上也有很多文章说明,下面是本人测试有效的方式. 1.效果图 PC端访问显示: 移动端访问显示: 2.实现: 不考虑移动端搜索引擎优化的话,只需要通过JS判断是否移动端,然后确定是否跳转到指定页面就行了,主要JS如下: //判断是否移动端,如果是则跳转到指定的URL地址 function browserRedirect(url) { //只读的字符串,声明了浏览器

bootstrap导航菜单,手机和PC端

<!DOCTYPE html> <html> <head lang="en"> <meta name="viewport" content="width=device-width"/> <meta charset="UTF-8"> <title></title> <!-- 新 Bootstrap 核心 CSS 文件 --> <