图片上传(支持多张)
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://lol.8miu.com/read-2128.html