图片上传(支持多张)
html端主要代码
<form id="iForm" enctype="multipart/form-data">
<input type="file" multiple="multiple" id="file" name="fileupload" onchange="uploadHeadImg_pic(this)">
</form>
<script type="text/javascript" src="js/ajaxfileupload.js"></script>
<script type="text/javascript" src="js/pic_upload.js"></script>
所引用的js:ajaxfileupload.js
jQuery.extend({
handleError: function( s, xhr, status, e ) {
if ( s.error ) {
s.error.call( s.context || s, xhr, status, e );
}
if ( s.global ) {
(s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
}
},
createUploadIframe: function(id, uri)
{
var frameId = 'jUploadFrame' + id;
if(window.ActiveXObject) {
var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
if(typeof uri== 'boolean'){
io.src = 'javascript:false';
}
else if(typeof uri== 'string'){
io.src = uri;
}
}
else {
var io = document.createElement('iframe');
io.id = frameId;
io.name = frameId;
}
io.style.position = 'absolute';
io.style.top = '-1000px';
io.style.left = '-1000px';
document.body.appendChild(io);
return io;
},
createUploadForm: function(id, fileElementId)
{
var formId = 'jUploadForm' + id;
var fileId = 'jUploadFile' + id;
var form = $('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
var oldElement = $('#' + fileElementId);
var newElement = $(oldElement).clone();
$(oldElement).attr('id', fileId);
$(oldElement).before(newElement);
$(oldElement).appendTo(form);
$(form).css('position', 'absolute');
$(form).css('top', '-1200px');
$(form).css('left', '-1200px');
$(form).appendTo('body');
return form;
},
ajaxFileUpload: function(s) {
s = jQuery.extend({}, jQuery.ajaxSettings, s);
var id = new Date().getTime();
var form = jQuery.createUploadForm(id, s.fileElementId);
var io = jQuery.createUploadIframe(id, s.secureuri);
var frameId = 'jUploadFrame' + id;
var formId = 'jUploadForm' + id;
if ( s.global && ! jQuery.active++ )
{
jQuery.event.trigger( "ajaxStart" );
}
var requestDone = false;
var xml = {};
if ( s.global )
jQuery.event.trigger("ajaxSend", [xml, s]);
var uploadCallback = function(isTimeout)
{
var io = document.getElementById(frameId);
try
{
if(io.contentWindow)
{
xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;
xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;
}else if(io.contentDocument)
{
xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;
xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;
}
}catch(e)
{
jQuery.handleError(s, xml, null, e);
}
if ( xml || isTimeout == "timeout")
{
requestDone = true;
var status;
try {
status = isTimeout != "timeout" ? "success" : "error";
if ( status != "error" )
{
var data = jQuery.uploadHttpData( xml, s.dataType );
if ( s.success )
s.success( data, status );
if( s.global )
jQuery.event.trigger( "ajaxSuccess", [xml, s] );
} else
jQuery.handleError(s, xml, status);
} catch(e)
{
status = "error";
jQuery.handleError(s, xml, status, e);
}
if( s.global )
jQuery.event.trigger( "ajaxComplete", [xml, s] );
if ( s.global && ! --jQuery.active )
jQuery.event.trigger( "ajaxStop" );
if ( s.complete )
s.complete(xml, status);
jQuery(io).unbind();
setTimeout(function()
{ try
{
$(io).remove();
$(form).remove();
} catch(e)
{
jQuery.handleError(s, xml, null, e);
}
}, 100)
xml = null
}
}
if ( s.timeout > 0 )
{
setTimeout(function(){
if( !requestDone ) uploadCallback( "timeout" );
}, s.timeout);
}
try
{
var form = $('#' + formId);
$(form).attr('action', s.url);
$(form).attr('method', 'POST');
$(form).attr('target', frameId);
if(form.encoding)
{
form.encoding = 'multipart/form-data';
}
else
{
form.enctype = 'multipart/form-data';
}
$(form).submit();
} catch(e)
{
jQuery.handleError(s, xml, null, e);
}
if(window.attachEvent){
document.getElementById(frameId).attachEvent('onload', uploadCallback);
}
else{
document.getElementById(frameId).addEventListener('load', uploadCallback, false);
}
return {abort: function () {
}};
},
uploadHttpData: function( r, type ) {
var data = !type;
data = type == "xml" || data ? r.responseXML : r.responseText;
if ( type == "script" ){
jQuery.globalEval( data );
}
if ( type == "json" ){
var data = r.responseText;
var rx = new RegExp("<pre.*?>(.*?)</pre>","i");
var am = rx.exec(data);
var data = (am) ? am[1] : "";
eval( "data = " + data );
}
if ( type == "html" ){
jQuery("<div>").html(data).evalScripts();
}
return data;
}
});
所引用的js:pic_upload.js
function uploadHeadImg_pic(obj){
layer.load();
$.ajaxFileUpload({
url:"/.../uploadManypic.json?query="+ +new Date().getTime(),
secureuri:false,
fileElementId:"file",
dataType: 'json',
contentType: false,
processData: false,
success: function (data){
layer.closeAll('loading');
},
error:function(error){
layer.closeAll('loading');
lalert('网络原因操作失败!','error');
}
});
}
后端java代码:
@RequestMapping("/uploadManypic.json")
public @ResponseBody JSONMap<String,Object> UploadManypic( @RequestParam(value="file",required=false)MultipartFile[] file,
HttpServletRequest request,HttpServletResponse response, HttpSession session)
throws IOException {
JSONMap<String,Object> model = new JSONMap<String,Object>();
try{
File targetFile=null;
String msg="";
int code=1;
ArrayList<Upload> list = new ArrayList<Upload>();
if (file!=null && file.length>0) {
for (int i = 0; i < file.length; i++) {
String fileName=file[i].getOriginalFilename();
if(fileName!=null&&fileName!=""){
String projectName="";
try{
projectName = request.getServletContext().getContextPath().substring(1);
}catch(Exception e){
projectName="ROOT";
}
String floderName = "Upload/image";
floderName = projectName + floderName.substring(0,1).toUpperCase() + floderName.substring(1) + "/";
String savePath = request.getServletContext().getRealPath("/").replace(projectName,"");
savePath = savePath + floderName;
String saveUrl = floderName;
File uploadDir = new File(savePath);
if(!uploadDir.exists()){
uploadDir.mkdirs();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String ymd = sdf.format(new Date());
savePath += ymd + "/";
saveUrl += ymd + "/";
String returnUrl = saveUrl;
String path =savePath;
String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());
String name=fileName;
fileName=System.currentTimeMillis()+fileF;
File file1 =new File(path);
if(!file1 .exists() && !file1 .isDirectory()){
file1 .mkdir();
}
targetFile = new File(file1, fileName);
file[i].transferTo(targetFile);
msg=returnUrl+fileName;
Upload upload = new Upload();
upload.setFilename(name);
upload.setFilepath(msg);
list.add(upload);
}
}
model.put("list", list);
}
model.put(SysConstant.OP_FLAG, true);
model.put(SysConstant.OP_MESSAGE, SysConstant.SUCCESS);
return model;
} catch (Exception e) {
e.printStackTrace();
model.put(SysConstant.OP_FLAG, false);
model.put(SysConstant.OP_MESSAGE, SysConstant.Exception);
return model;
}
}
相关的实体类:
package com.repast.core.uiview;
public class Upload {
private String filename;
private String filepath;
private String uploaddate;
private String servername;
private String fileRealpath;
private String filesize;
public String getFileRealpath() {
return fileRealpath;
}
public void setFileRealpath(String fileRealpath) {
this.fileRealpath = fileRealpath;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public String getFilepath() {
return filepath;
}
public void setFilepath(String filepath) {
this.filepath = filepath;
}
public String getUploaddate() {
return uploaddate;
}
public void setUploaddate(String uploaddate) {
this.uploaddate = uploaddate;
}
public String getServername() {
return servername;
}
public void setServername(String servername) {
this.servername = servername;
}
public String getFilesize() {
return filesize;
}
public void setFilesize(String filesize) {
this.filesize = filesize;
}
}
完
本文地址:https://blog.csdn.net/weixin_44460462/article/details/109179290