<!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">车型名称&nbsp;<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">排序&nbsp;<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">选择配置图&nbsp;<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">&nbsp;&nbsp;-
<input type="button" value="<g:message code="base.back" />" class="btn03" onclick="backto()" >
</div>

</form>
</body>

</html>

如有雷同、请见谅

多图片上传(base64方式传至后台)的更多相关文章

  1. 怎么才能将文件流或者图片转化为base64,传到前台展示

    图片转化为base64,传到前台展示 public String getBase64(){ String imgStr = ""; try { File file = new Fi ...

  2. Java 将图片转成base64,传到前台展示

    后台代码: public String getBase64(SysFile sysFile){ String imgStr = ""; try { File file = new ...

  3. vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式

    进入正题 1. PC端调用摄像头拍照上传base64格式到后台,这个没什么花里胡哨的骚操作,直接看代码 (canvas + video) <template> <div> &l ...

  4. 前端js图片上传

    前端js图片上传,原理用input type="file"获取图片然后把图片转换成base64编码传到后台. 图片上传 <!DOCTYPE html><html& ...

  5. 小程序editor篇-基本使用图片上传

    今天小程序项目内,要弄一个editor,富文本编辑功能,支持图文并茂,前几天刚好看了小程序的demo应用,刚好看到editor这个东东,那就安排! 官网示例git地址 大概看了下文档,拉下官方示例,看 ...

  6. php实现base64图片上传方式实例代码

    <?php /** * base64图片上传 * @param $base64_img * @return array */ header("content-type:text/htm ...

  7. TinyMCE编辑器图片上传扩展(base64方式),asp.net mvc5

    编辑器上传图片一般都是先上传到服务器中,若是用户取消或忘记提交表单就产生一张废图在空间里面,时间一长就产生大量占用空间的无用图片,现在就试试提交前先用base64,提交后,在后台处理编辑器内容中的&l ...

  8. file标签 - 图片上传前预览 - FileReader & 网络图片转base64和文件流

    记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...

  9. js实现图片上传预览功能,使用base64编码来实现

    实现图片上传的方法有很多,这里我们介绍比较简单的一种,使用base64对图片信息进行编码,然后直接将图片的base64信息存到数据库. 但是对于系统中需要上传的图片较多时并不建议采用这种方式,我们一般 ...

随机推荐

  1. 【luogu P3901 数列找不同】 题解

    对于区间查询的问题,提供一种思路: 莫队. 莫队是处理区间问题的乱搞神器,尤其是对于离线查询问题,当然也可以做在线查询,比如带修莫队. 对于有的题,莫队是乱搞骗分,而在某些地方,莫队是正解. 这道题来 ...

  2. jdbc连接各种数据库字符串

    oracle driverClass:oracle.jdbc.driver.OracleDriver url:jdbc:oracle:thin:@127.0.0.1:1521:dbname mysql ...

  3. Oracle 用户、授权、角色管理

    Oracle 用户管理 一.创建用户的Profile文件SQL> create profile student limit // student为资源文件名FAILED_LOGIN_ATTEMP ...

  4. 微信小程序流量主如何开通

    2018年7月09日,微信小程序流量主全面开通,开通条件如下: 累计独立访客(UV)不低于1000          # 一共一千个人访问你的小程序就可以申请(不限时间) 有严重违规记录的小程序不予申 ...

  5. xcode运行时候 You don’t have permission.

    xcode 不能运行,提示没有权限    是因为使用第三方框架有plist文件存在

  6. swift计算label动态宽度和高度

    swift计算label动态宽度和高度 func getLabHeigh(labelStr:String,font:UIFont,width:CGFloat) -> CGFloat { let ...

  7. VM虚拟机网卡LAN区段模拟内网使用教程

    目录   1. 测试环境   2. 设置LAN区段并测试    2.1. 添加LAN区段    2.2. 在虚拟机中设置静态IP地址    2.3. 测试同一LAN区段的主机是否可以联通    2.4 ...

  8. MySQL Waiting for table metadata lock的解决方法

    最近需要在某一个表中新增字段,使用Sequel Pro 或者Navicat工具都会出现程序没有反应,使用 show processlist 查看,满屏都是 Waiting for table meta ...

  9. 前端pc版的简单适配

    我们都知道对于前端pc版本的适配是一个难题,大部分都是做的媒体查询.但是有时间公司不要媒体查询 就是需要不管多大的屏幕都是满屏显示.我就在考虑为啥不用rem给pc端做个适配. 我是基于设计图是1920 ...

  10. JQ 封装全选函数

    单击时触发效果: 如果有一个没有选中把全选的勾去了,如果select所有的都选中了,那就把全选勾上 html里: <div class="row cl"> <la ...