纯JS实现多图片上传(在layui框架中)
HTML代码
<form id="form1" class="layui-form layui-form-pane" action="{:url('')}" enctype="multipart/form-data">
<div class='layui-form-item'>
<label class="layui-form-label">游戏截图</label>
<div class='layui-input-block'>
<div class='layui-box layui-upload-button'>
<input type='file' id='picsInput' name='picsInput' multiple='multiple' onchange='getPicture(this)'>
<input type='hidden' id='pics' name='thumb3' value='{$info.thumb3|default=""}'>
<span class='layui-upload-icon'><i class='layui-icon'></i>选择图片</span>
</div>
<input type='button' class='layui-btn layui-btn-normal' onclick='do_upload()' value='立即上传'/>
<div id='showimg'>
{volist name="thumb3_arr" id="vo"}
<img src="{$vo}" class="img-thumbnail" />
{/volist}
</div>
</div>
</div>
</form>
<script type = 'text/javascript' >
var layer, tbl_img = document.getElementById('showimg'),
imgObjs = {};
layui.use(['layer', 'form'],
function() {
layer = layui.layer;
var form = layui.form();
});
function getPicture(obj) {
var imgs = obj.files;
tbl_img.innerHTML = '';
for (var i = 0; i < imgs.length; i++) {
if (!imgs[i]) return;
if (! (imgs[i].type.indexOf('image') == 0 && imgs[i].type && /\.(?:jpg|png|gif)$/.test(imgs[i].name))) {
layer.msg('图片只能是jpg,gif,png');
return;
}
var reader = new FileReader();
reader.readAsDataURL(imgs[i]);
reader.onload = function(e){
tbl_img.innerHTML += '<img src='+this.result+' alt="" class="not_upload" />'
}
}
imgObjs = obj.files;
} function do_upload() {
var imgsxxx = new Array();
tbl_img.innerHTML = '';
layui.use(['jquery'], function(){
var $ = layui.jquery //重点处
for(var i = 0, ilen = imgObjs.length; i < ilen; i++) {
var file = imgObjs[i];
var formdata = new FormData();
// 上传到服务器的字段名称
formdata.append('files', file);
$.ajax({
type: 'post',
url: "/kbcms/admin_upload/upload",
data: formdata,
cache: false,
async:false,
processData: false,
contentType: false,
dataType:'json'
}).success(function (data) {
var tmp = JSON.parse(data);
imgsxxx.push(tmp.url);
tbl_img.innerHTML += '<img src='+ tmp.url +' alt="" class="img-thumbnail" />'
}).error(function () {
alert("上传失败");
});
}
var str = JSON.stringify( imgsxxx );
$('#pics').val(str);
layer.msg('上传成功!');
});
}
</script>
<style>
#showimg{}
#showimg img { width: 120px; height: auto; }
#showimg .not_upload { border: 1px #0c9076 solid; padding: 4px; margin: 4px;}
</style>
纯JS实现多图片上传(在layui框架中)的更多相关文章
- js基础进阶--图片上传时实现本地预览功能的原理
欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 最近在项目上加一个图片裁剪上传的功能,用的是cropper插件,注意到选择本地图片后就会有预览效果,这里整理一下这种预览效 ...
- 原生JS实现异步图片上传(预览)
效果 实现过程分为两步 1. 用户点击添加后通过 H5文件读取 FileReader对象以DataURL的格式读取图片 2. 通过FormData对象生成表单数据,通过ajax上传到后台 HTML & ...
- Ajax异步上传在SSM框架中的应用
最近在做毕业设计,由于毕设中要实现图片上传和视频上传的功能.突然发现原来的Form表单中的file已经满足不了我了,于是在一番折腾之后终于让我找到了一个简便的上传方式.下面来和大家分享一下我的过程. ...
- 阿里云使用js 实现OSS图片上传、获取OSS图片列表、获取图片外网访问地址(读写权限私有、读写权限公共);
详情请参考:https://help.aliyun.com/document_detail/32069.html?spm=a2c4g.11186623.6.763.ZgC59a 或者https://h ...
- 阿里云OSS图片上传plupload.js结合jq-weui 图片上传的插件
项目中用到了oss上传,用的plupload,奈何样式上不敢恭维,特别是放在移动端上使用.于是自己把它移植到了jq weui的上传图片组件上. 更改:选择照片后确认即及时上传至oss服务器,不限制上传 ...
- js canvas压缩图片上传
$('input[type="file"]').on('change',function(){ var files = !!this.files ? this.files : [] ...
- 从零开始学习Node.js例子三 图片上传和显示
index.js var server = require("./server"); var router = require("./router"); var ...
- 百度UEditor在线编辑器的配置和图片上传
前言 最近在项目中使用了百度UEditor富文本编辑器,配置UEditor过程中遇到了几个问题,在此记录一下解决方案和使用方法,避免以后使用UEditor出现类似的错误. 基本配置 一.下载UEdit ...
- PHP实现多图片上传
PHP实现多图片上传 今天在工作中遇到了一个需求:一个表单实现多个上传图片,类似于QQ空间上传照片的模式.即:可以一次性上传多个图片,但是封面图片只有一个. 最先,最重要的事,在服务器上对文件进行读写 ...
随机推荐
- qt5--表格控件QTableWidget
需要 #include <QTableWidget> #include <QTableWidgetItem> #include "win.h" ...
- CSS3 选择器——笔记+实战案例(基本选择器、组合选择器、属性选择器、伪类选择器)
使用CSS3 选择器——笔记 CSS通过选择器控制HTML元素,CSS选择器对网页对象可以实现一对一.一对多或者多对一的匹配. 一.CSS3选择器分类 CSS选择器在CSS2.1选择器的基础上新增了属 ...
- arduino读取GPIO数据
一.接线 五向按键模块接线方法,直接盗图,COM接VCC或GND都可以,只不过获得的电平不同 二.初始化 GPIO接口使用前,必须初始化,设定引脚用于输入还是输出 pinMode(D7, INPUT) ...
- 31.整数中1出现的次数(从1到n整数中1出现的次数)
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...
- JS实现 Tab栏切换案例
要求:当鼠标点击上面相应的选项卡(tab),下面页面的内容也随之而改变. 结构分析: 全部的内容都放到一个大的盒子里面,盒子里面又可以分为上面和下面两个盒子. 上面的盒子放了 5个li,装着5个小的选 ...
- effective c++ (三)
条款07:为多态基类申明virtual析构函数 1.c++明白指出,当derived class对象经由一个base class指针被删除,而该base class带有一个non-virtual 析构 ...
- 'vue' 不是内部或外部命令,也不是可运行的程序 或批处理文件
解决方案:找到npm i xxx -g 下载后存放的路径,将路径添加到环境变量中,即可.1.npm config list 查看一下npm 的配置信息 2.打开路径看看里面的命令.window用户wi ...
- springboot + mybatis sql日志
#mapper sql日志 替换成你的mapper接口所在的包名 logging.level.com.example.dao=debug
- QTableWidgetItem QTreeWidgwtItem 复选框的取消显示方法
思路: QTableWidgetItem :item->setData(Qt::CheckStateRole,QVariant()); QTreeWidgwtItem :item-> ...
- Android_(游戏)打飞机02:游戏背景滚动
(游戏)打飞机01:前言 传送门 (游戏)打飞机02:游戏背景滚动 传送门 (游戏)打飞机03:控制玩家飞机 传送门 (游戏)打飞机04:绘画敌机.添加子弹 传送门 (游戏)打飞机05:处理子弹, ...