图片异步上传,使用ajax上传图片

1、使用插件plupload

2、实现效果

 

3、HTML

1 <li>
2     <div class="default" data-disabled="false"><img src="" class="upImage"></div>
3     <input id="fileStorge2" value="" type="hidden" class="fileStorge">
4     <input type="file" name="" value="" style="display: none;" class="fileUp" id="fileUp2" data-id="2">
5 </li>

 

 4、JS

//点击上传图片
$('body').off('click','.default');
$('body').on('click','.default', function () {var disabled = $(this).attr('data-disabled');if (disabled === "true") {return false;}else{$(this).siblings('.fileUp').trigger('click');}});//图片上传初始化函数
function initImage(){$('.fileUp').each(function(index,ele){var id = $(this).attr('id'),indexNum = $(this).attr('data-id');initUpload(id, indexNum);});}//图片上传
function initUpload(eleID, index) {var uploader = new plupload.Uploader({ //实例化一个plupload上传对象
        browse_button : document.getElementById(eleID),url : 'upload.html', //服务器端的上传页面地址flash_swf_url : 'Moxie.swf',silverlight_xap_url : 'Moxie.xap',multi_selection: false,//是否可以在文件浏览对话框中选择多个文件
        filters: {mime_types : [ //只允许上传图片文件{ title : "图片文件", extensions : "jpg,gif,png" }]}});uploader.init(); //初始化//绑定文件添加进队列事件uploader.bind('FilesAdded',function(uploader,files){for(var i = 0, len = files.length; i<len; i++){!function(i){previewImage(files[i],function(imgsrc){$('#'+eleID+'').siblings('.default').find('img').attr('src',imgsrc).show();$('#fileStorge'+index).val(encodeURIComponent(imgsrc));});}(i);}});}//图片上传预览
function previewImage(file,callback){ if(file.type=='image/gif'){ //gif使用FileReader进行预览,因为mOxie.Image只支持jpg和pngvar fr = new mOxie.FileReader();fr.onload = function(){callback(fr.result);}fr.readAsDataURL(file.getSource());}else{var preloader = new mOxie.Image();preloader.onload = function() {preloader.downsize( 300, 300 );//先压缩一下要预览的图片,宽300,高300var imgsrc = preloader.type=='image/jpeg' ? preloader.getAsDataURL('image/jpeg',80) : preloader.getAsDataURL(); //得到图片src,实质为一个base64编码的数据callback && callback(imgsrc); //callback传入的参数为预览图片的url
        };preloader.load( file.getSource() );}   
}

 

转载于:https://www.cnblogs.com/zhanghuiyun/p/6709596.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416900.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ant Desgin Pro 修改登录后默认导航到的位置

src/models/login.js 40行 yield put(routerRedux.replace(redirect || /)); 修改/为需要的路径

Ant Design Pro 登录超时处理

登录超时处理 看src/utils/request.js中的通用处理 有if (status 401) {dispatch到注销页面 所以后端用户状态无效时直接返回401即可 如 response.setStatus(401);

java并发容器

1 并发容器 &#xff08;1&#xff09;ConcurrentHashMap 把整个hashmap 分成若干个小的hashmap&#xff08;segment&#xff09;&#xff0c;每个segment自己加锁&#xff08;用ReentrantLock&#xff09;,put的时候采用while(trylock())&#xff0c;tryLock是底层是使用cas竞…

Ant Design Pro 修改title

在userlayout.js和Basiclayout.js里面修改getPageTitle方法里面的title变量值&#xff0c;修改后重启下项目&#xff0c;清除下缓存~~ src/pages/document.ejs中也要修改。

离职原因任意说

俗话说。人往高处走&#xff0c;水往低处流。此处不留爷&#xff0c;自有留爷处。金子总有发光的时候。每一个人离职都能够找出一堆的理由。离职理由大不同。如今让我们分享下呗。 &#xff08;1&#xff09;习惯性离职&#xff0c;这些人常年无心&#xff0c;静心工作&#xf…

Azkaban WebApi 调用

目录 登录接口 获取projectid及flow列表 获取某个project下flow的schedule执行计划 修改执行时间 列表执行历史 执行flow 删除执行计划 官方文档&#xff1a;https://azkaban.readthedocs.io/en/latest/ajaxApi.html 登录接口 调用示例: curl -k -X POST --data "…

Android BitmapShader 实战 实现圆形、圆角图片

转载请标明出处&#xff1a;http://blog.csdn.net/lmj623565791/article/details/41967509&#xff0c;本文出自&#xff1a;【张鸿洋的博客】 1、概述 记得初学那会写过一篇博客Android 完美实现图片圆角和圆形&#xff08;对实现进行分析&#xff09;&#xff0c;主要是个自定…

离线部署CDH5.16.1及各种坑

所需安装包及版本说明&#xff1a;由于我们的操作系统为CentOS7&#xff0c;需要下载以下文件&#xff1a; cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 manifest.json Cloudera M…

如何快速理解JavaScript 中重要语句for循环

一.基本结构&#xff1a;for(起始状态&#xff1b;判断条件&#xff1b;状态改变){ 执行语句&#xff1b; } 执行顺序&#xff1a;for&#xff08;var i1;i<3;i&#xff09;{ alert(i); } 1.判断条件 2.执行语句 3.状态改变 break&#xff08;结束此循环&#xff09;.…

Seafile 开源企业云盘部署

目录 部署 下载安装包 安装pip 安装其他依赖 安装 启动 重新部署 官网&#xff1a;https://www.seafile.com/home/ 文档&#xff1a;https://manual-cn.seafile.com/ 源码&#xff1a;https://github.com/haiwen/seafile-docs-cn 部署 下载安装包 https://www.seafi…

前端学习(2387):组件库使用说明

main.js import Vue from vue import App from ./App.vue import router from ./router import ./styles/index.less // 加载组件库 import ElementUI from element-ui // 加载样式 import element-ui/lib/theme-chalk/index.css Vue.config.productionTip false // 注册组件…

深度理解 Virtual DOM

目录&#xff1a; 1 前言 2 技术发展史 3 Virtual DOM 算法 4 Virtual DOM 实现 5 Virtual DOM 树的差异&#xff08;Diff算法&#xff09; 6 结语 7 参考链接 1 前言 我会尽量把 Virtual DOM 应用场景、实现思路、算法讲述清楚&#xff0c;希望大家阅读后&#xff0c;能让你 深…

前端学习(2388):封装请求模块

request.js // axios import axios from axios// 创建实例 通过实例发送请求 const request axios.create({// 请求的基本路径baseURL: http://ttapi.research.itcast.cn/ }) // 导出 export default request//请求拦截器//响应烂机器/* import request from request.js requ…

JdbcTemplate操作

获取单值 int count jdbcTemplate.queryForObject("select count(*) from tb1",Integer.class); 执行插入操作获取自增长ID public Emp create(final Emp emp){final String sql "insert into Emp (age,name)values(?,?)";KeyHolder keyHolder new …

oracle_数据库对象

转载于:https://www.cnblogs.com/jycjy/p/6728649.html