多图片上传(base64方式传至后台)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
<script type="text/javascript">
window.onload = function(){
var input = document.getElementById("file_input");
var result;
var dataArr = []; // 储存所选图片的结果(文件名和base64数据)
var fd; //FormData方式发送请求
//var oSubmit = document.getElementById("submit");
var oInput = document.getElementById("file_input");
var fileList = document.getElementById("fileList");
if(typeof FileReader==='undefined'){
alert("抱歉,你的浏览器不支持 FileReader");
input.setAttribute('disabled','disabled');
}else{
input.addEventListener('change',readFile,false);
} //handler
function readFile(){
fd = new FormData();
var iLen = this.files.length;
var index = 0;
for(var i=0;i<iLen;i++){
if (!input['value'].match(/.jpg|.gif|.png|.jpeg|.bmp/i)){ //判断上传文件格式
return alert("上传的图片格式不正确,请重新选择");
}
var reader = new FileReader();
reader.index = i;
fd.append(i,this.files[i]);
reader.readAsDataURL(this.files[i]); //转成base64
reader.fileName = this.files[i].name;
reader.onload = function(e){
var imgMsg = {
name : this.fileName,//获取文件名
base64 : this.result //reader.readAsDataURL方法执行完后,base64数据储存在reader.result里
}
dataArr.push(imgMsg);
var fileName=this.fileName
result = '<div class="delete" style="color:red">删除</div><div class="result"><img src="'+this.result+'" src="this"/></div><div align="center">'+fileName+"</div>";
var div = document.createElement('td');
div.innerHTML = result;
div['className'] = 'float';
div['index'] = index;
document.getElementById('peizhitu').appendChild(div);
var name="";
var filedata="";
for (var i = 0; i < dataArr.length; i++) {
if (dataArr[i]) {
name+=dataArr[i].name+"/";
filedata+=dataArr[i].base64+"-";
}
}
document.getElementById("fileName").value = name;
document.getElementById("fileData").value = filedata;
var img = div.getElementsByTagName('img')[0];
img.onload = function(){
var nowHeight = ReSizePic(this); //设置图片大小
this.parentNode.style.display = 'block';
var oParent = this.parentNode;
if(nowHeight){
oParent.style.paddingTop = (oParent.offsetHeight - nowHeight)/2 + 'px';
}
}
div.onclick = function(){
this.remove(); // 在页面中删除该图片元素
delete dataArr[this.index]; // 删除dataArr对应的数据
}
index++;
}
}
}
function send(){
var ctype =$("#ctype").val();
var sort = $("#sort").val();
var submitArr = [];
var name="";
var filedata="";
for (var i = 0; i < dataArr.length; i++) {
if (dataArr[i]) {
name+=dataArr[i].name+"/";
filedata+=dataArr[i].base64+"-";
//submitArr.push(dataArr[i]);
}
}
$.ajax({
url : "${g.createLinkTo(dir:'seatDefects',file:'yjcxcreateSubmit')}",
type : 'post',
data : {"ctype":ctype,"sort":sort,"name":name,"filedata":filedata},
dataType : "json",
success : function(data){
//console.log(data)
//window.location.href = "${g.createLinkTo(dir:'seatDefects',file:'yjcxindex')}";
}
})
}
/* oSubmit.onclick=function(){
if(!dataArr.length){
return alert('请先选择文件');
}
send();
}*/
}
/*
用ajax发送fd参数时要告诉jQuery不要去处理发送的数据,
不要去设置Content-Type请求头才可以发送成功,否则会报“Illegal invocation”的错误,
也就是非法调用,所以要加上“processData: false,contentType: false,”
* */
function ReSizePic(ThisPic) {
var RePicWidth = 200; //这里修改为您想显示的宽度值
var TrueWidth = ThisPic.width; //图片实际宽度
var TrueHeight = ThisPic.height; //图片实际高度
if(TrueWidth>TrueHeight){
//宽大于高
var reWidth = RePicWidth;
ThisPic.width = reWidth;
//垂直居中
var nowHeight = TrueHeight * (reWidth/TrueWidth);
return nowHeight; //将图片修改后的高度返回,供垂直居中用
}else{
//宽小于高
var reHeight = RePicWidth;
ThisPic.height = reHeight;
}
}
</script>
</head>
<body>
<form id="ff" name="sysRole" enctype="multipart/form-data" action="${g.createLinkTo(dir:'seatDefects',file:'yjcxcreateSubmit')}" method="post" onSubmit="return check()">
<input type="hidden" name="cxid" id="cxid" value="${cxid}"/>
<table cellpadding="0" cellspacing="0" border="0" class="box01" width="100%">
<tr>
<th colspan="4">预检车型面套配置信息</th>
</tr>
<tr>
<td width="15%" class="c1 r">车型名称 <font style="color:red">*</font></td>
<td class="c2" width="35%"><input type="text" id="ctype" name="ctype" maxlength = "20" class="input easyui-validatebox" data-options="required:true" value="${ctype}"></td>
<td width="15%" class="c1 r">排序 <font style="color:red">*</font></td>
<td class="c2" width="35%" colspan="3"><input type="text" class="easyui-numberbox input" id="sort" name="sort" data-options="required:true,min:0,precision:0" value="${sort}"></input></td>
</tr>
<tr >
<td width="15%" class="c1 r">选择配置图 <font style="color:red">*</font></td>
<td class="c2" width="35%" colspan="3" >
<div class="container">
%{--<button id="select">(重新)选择图片</button>
<button id="add">(追加)图片</button>--}%
<input hidden="true" type="text" id="fileName" name="fileName" class="input easyui-validatebox" />
<input hidden="true" type="text" id="fileData" name="fileData" class="input easyui-validatebox" />
<input type="file" id="file_input" multiple name="file_input" class="easyui-filebox" />
</div>
<table id="peizhitu">
</table>
</td>
</tr>
</table>
<div class="button">
<input type="submit" value="<g:message code="base.submit" />" class="btn01"> -
<input type="button" value="<g:message code="base.back" />" class="btn03" onclick="backto()" >
</div>
</form>
</body>
</html>
如有雷同、请见谅
多图片上传(base64方式传至后台)的更多相关文章
- 怎么才能将文件流或者图片转化为base64,传到前台展示
图片转化为base64,传到前台展示 public String getBase64(){ String imgStr = ""; try { File file = new Fi ...
- Java 将图片转成base64,传到前台展示
后台代码: public String getBase64(SysFile sysFile){ String imgStr = ""; try { File file = new ...
- vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式
进入正题 1. PC端调用摄像头拍照上传base64格式到后台,这个没什么花里胡哨的骚操作,直接看代码 (canvas + video) <template> <div> &l ...
- 前端js图片上传
前端js图片上传,原理用input type="file"获取图片然后把图片转换成base64编码传到后台. 图片上传 <!DOCTYPE html><html& ...
- 小程序editor篇-基本使用图片上传
今天小程序项目内,要弄一个editor,富文本编辑功能,支持图文并茂,前几天刚好看了小程序的demo应用,刚好看到editor这个东东,那就安排! 官网示例git地址 大概看了下文档,拉下官方示例,看 ...
- php实现base64图片上传方式实例代码
<?php /** * base64图片上传 * @param $base64_img * @return array */ header("content-type:text/htm ...
- TinyMCE编辑器图片上传扩展(base64方式),asp.net mvc5
编辑器上传图片一般都是先上传到服务器中,若是用户取消或忘记提交表单就产生一张废图在空间里面,时间一长就产生大量占用空间的无用图片,现在就试试提交前先用base64,提交后,在后台处理编辑器内容中的&l ...
- file标签 - 图片上传前预览 - FileReader & 网络图片转base64和文件流
记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...
- js实现图片上传预览功能,使用base64编码来实现
实现图片上传的方法有很多,这里我们介绍比较简单的一种,使用base64对图片信息进行编码,然后直接将图片的base64信息存到数据库. 但是对于系统中需要上传的图片较多时并不建议采用这种方式,我们一般 ...
随机推荐
- com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed 或者 该连接已关闭
com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed 或者 该连接已关闭 解决方案: DBUtil公共方法如下: package ...
- 【luogu P2746 [USACO5.3]校园网Network of Schools】 题解
题目链接:https://www.luogu.org/problemnew/show/P2812 注意:判断出入度是否为0的时候枚举只需到颜色的数量. 坑点:当只有一个强连通分量时,不需要再添加新边. ...
- PAT 1063. Set Similarity
1063. Set Similarity 题目大意 给定 n 个集合, k 个询问, 求任意两个集合的并集和合集. 思路 一道裸的考察 STL 中 set 的题, 我居然还用 hash 错过一遍, 用 ...
- React性能优化总结(转)
原文链接: https://segmentfault.com/a/1190000007811296?utm_source=tuicool&utm_medium=referral 初学者对Rea ...
- VUE插件整理
转自:https://blog.csdn.net/miaozhenzhong/article/details/80138174 1.VsCode官方插件地址: https://marketplace. ...
- 封装一个方法获取url上面的参数
一.取参 ] : ); ]; ; ]., -); ]) === ]; , , b: 'fdfdfd', c: '9999' })); //a=123546&b=fdfdfd&c=9 ...
- harbor中碰到的问题
harbor部署整体比较简单,但是就是这么简单的东西稍微改变点配置文件就会有不小的问题 1.问题1 部署harbor1.6发现web界面删除的镜像在push一遍上去后,镜像大小为0 且无法删除,这个问 ...
- Linux下安装google拼音输入法
首先安装fcitx,前几天看了很多在ubuntu上能够使用的输入法,有人推荐是搜狗输入法,毕竟是国产嘛,但是会有意外发生,比如说安装之后会产生输入的字符乱码,是一堆看不懂的东西,我就是因为遇到了,然后 ...
- jquery图片滚动animate.css
@charset "UTF-8"; /*!Animate.css - http://daneden.me/animateLicensed under the MIT license ...
- uva 253 - Cube painting(相同骰子)
习题4-4 骰子涂色(Cube painting, UVa 253) 输入两个骰子,判断二者是否等价.每个骰子用6个字母表示,如图4-7所示. 图4-7 骰子涂色 例如rbgggr和rggbgr分别表 ...