多图片上传(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">车型名称&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>

如有雷同、请见谅

posted @ 2018-10-09 11:43  易行舟  阅读(4598)  评论(0编辑  收藏  举报