上传图片的功能是极为常用的,之前做过一个移动端上传文件的功能(基于jquery的),总结梳理一下。

html

<div class="uploadPic clearBox">
<ul>
<li>
<a href="javascript:void(0)" class="add001"><i class="iconfont"></i></a>
<div class="moxie-shim moxie-shim-html5 upImgBox">
<a href="javascript:void(0)" class="del002 iconfont delImg" style="display:none"><span></span></a>
<input id="fileUpload0" type="file" accept="image/png,image/gif,image/jpeg,image/bmp">
</div>
</li>
</ul>
<div>

js

$('#fileUpload0').change(function() {
uploadImg(this);
});
function uploadImg(element){
var file = element.files[0];
var $elemt=$(element);
var $parent = $elemt.parent();
var imgFileSize = file.size;
var loadingImgSrc='/images/global/loading.gif';
if(imgFileSize > 10*1024*1024) {
alert(ci18n.imgTooLarge);
} else {
var uploadComplete=function(evt){
var resJson=JSON.parse(evt.target.responseText);
if(resJson.fileurl){
$parent.find('img').attr('src',resJson.fileurl);
uploadImgUrls['a'+$elemt.parent().parent().index()]=resJson.fileurl;
$parent.find('.delImg').show();
$parent.parent('li').next().show();
}
};
var uploadFailed=function(evt){
alert('Net error.');
};
var fd = new FormData();
fd.append('upfile',file);
var xhr = new XMLHttpRequest();
xhr.addEventListener('load', uploadComplete, false);
xhr.addEventListener('error', uploadFailed, false);
xhr.open('POST', '/activity/group-upload');
$parent.append('<img src="'+loadingImgSrc+'">');
xhr.send(fd);
}
element.value = '';
}
$('.delImg').click(function() {
var $self=$(this);
var $parent = $self.parent();
delete uploadImgUrls['a'+$self.parent().parent().index()];
$parent.find('img').remove('');
$self.hide();
$parent.parent('li').next().hide();
});

效果:

点击“+”后会拉起选图片控件,选择之后会显示loading状态,上传成功之后,获取到图片地址之后,框内会显示上传的图片。

主要用了FromData来实现图片上传,并对于图片大小做了校验。

HTML5移动端图片上传模块的更多相关文章

  1. LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android

    LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android jincon 发表于 2015-02-26 18:31:01 发表在: php开发 localresiz ...

  2. 移动端图片上传解决方案localResizeIMG先压缩后ajax无刷新上传

    现在科技太发达,移动设备像素越来越高,随便一张照片2M+,但是要做移动端图片上传和pc上略有不同,移动端你不能去限制图片大小,让用户先处理图片再上传,这样不现实.所以理解的解决方案就是在上传先进行图片 ...

  3. angularJS+Ionic移动端图片上传的解决办法

    前端开发中经常会碰到图片上传的问题,网上的解决办法很多,可是有些图片上传的插件会有一些附属的插件,因此因为一个图片上传的问题可能额需要引入其他插件到项目中,久而久之项目会不伦不类,有时候插件之间也会有 ...

  4. 基于html5的多图片上传,预览

    基于html5的多图片上传 本文是建立在张鑫旭大神的多文图片传的基础之上. 首先先放出来大神多图片上传的博客地址:http://www.zhangxinxu.com/wordpress/2011/09 ...

  5. Js 之移动端图片上传插件mbUploadify

    一.下载 https://pan.baidu.com/s/1NEL4tkHoK4ydqdMi_hgWcw 提取码:vx7e 二.Demo示例 <div class="weui_uplo ...

  6. 用html5文件api实现移动端图片上传&预览效果

    想要用h5在移动端实现图片上传&预览效果,首先要了解html5的文件api相关知识(所有api只列举本功能所需): 1.Blob对象  Blob表示原始二进制数据,Html5的file对象就继 ...

  7. vue+axios实现移动端图片上传

    在利用vue做一些H5页面时,或多或少会遇到有图片上传的操作,主要是运用html5里面的input[type=file]来实现,传递到后端的数据是以二进制的格式传递,所以上传图片的请求与普通的请求稍微 ...

  8. HTML5 FileReader实现图片上传前预览

    如果你的浏览器支持Html5的FileReader的话,实现图片上传前进行预览是一件非常容易之事情. 在控制器,创建一个视图Action: jQuery代码: 实时演示一下: 下面内容于2014-11 ...

  9. vue移动端图片上传压缩

    上传压缩方法 import {api} from '../../api/api.js'; import axios from 'axios'; export function imgPreview ( ...

随机推荐

  1. mysql之替换字符串

    update `wp_posts` set `post_content`=REPLACE(`post_content`,'localhost/linkcp','www.linkcp.cn') wher ...

  2. Android——播放器和图片轮播

    layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  3. 字符串hash算法

    http://www.cnblogs.com/zyf0163/p/4806951.html hash函数对大家来说不陌生吧 ? 而这次我们就用hash函数来实现字符串匹配. 首先我们会想一下二进制数. ...

  4. linux显示器常见设置

    1. 设置系统默认的分辨率 xrandr  命令: > xrandr Screen 0: minimum 1 x 1, current 1920 x 1080, maximum 8192 x 8 ...

  5. linux一些常用配置

    1.vi编辑退出不清屏 .bashrc最后加: 2.

  6. SQL Server Profiler

    一.SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询: 在后台收集查询信息: 分析性能: 诊断像死锁之类的问 ...

  7. jdk环境变量配置

    新建用户变量PATH,编辑jdk路径. 仅此而已.

  8. [转载]再谈百度:KPI、无人机,以及一个必须给父母看的案例

    [转载]再谈百度:KPI.无人机,以及一个必须给父母看的案例 发表于 2016-03-15   |   0 Comments   |   阅读次数 33 原文: 再谈百度:KPI.无人机,以及一个必须 ...

  9. 重置mysql数据库密码

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

  10. Interview

    下面的题是供大家查漏补缺用的,真正的把这些题搞懂了,才能"以不变应万变". 回答问题的时候能联系做过项目的例子是最好的,有的问题后面我已经补充联系到项目中的对应的案例了. 1.简述 ...