ACTION代码
package ul;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Date;
import org.apache.struts2.ServletActionContext;
import ccme.sys.base.BaseAction;
import ccme.sys.json.JSONUtil;
public class FileUploadAction extends BaseAction
{
privatestatic final long serialVersionUID = 572146812454l ;
privatestatic final int BUFFER_SIZE = 5 * 1024 ;
private FilemyFile;
privateString contentType;
privateString fileName;
privateString imageFileName;
privateString caption;
Stringnewfilename;
Stringgroupid;
privatestatic void copy(File src, File dst) {
try {
InputStream in = null ;
OutputStream out = null ;
try{
FileOutputStream f=newFileOutputStream(dst);
in = new BufferedInputStream( new FileInputStream(src),BUFFER_SIZE);
out = new BufferedOutputStream( f, BUFFER_SIZE);
byte [] buffer = new byte [BUFFER_SIZE];
while (in.read(buffer) > 0 ) {
out.write(buffer);
}
} finally {
if ( null != in) {
in.close();
}
if ( null != out) {
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
privatestatic String getExtention(String fileName) {
int pos = fileName.lastIndexOf(".");
return fileName.substring(pos);
}
@Override
public Stringexecute()
{
PrintWriter out = null;
FilePojo filePojo=newFilePojo();
try {
this.getResponse().setContentType("text/html;charset=utf-8");
out= this.getResponse().getWriter();
imageFileName= new Date().getTime() + getExtention(fileName);
FileimageFile = newFile(ServletActionContext.getServletContext().getRealPath("/UploadImages")+"/"+imageFileName);
copy(myFile,imageFile);
filePojo.setFilename(imageFileName);
filePojo.setGroupid(this.getGroupid());
filePojo.setFileszie(imageFile.length());
filePojo.setResult("true");
}
catch(Exception e)
{
e.printStackTrace();
filePojo.setResult("error");
}
out.print(JSONUtil.bean2json(filePojo));
out.close();
return null;
}
public voidsetMyFileContentType(String contentType) {
this .contentType = contentType;
}
public voidsetMyFileFileName(String fileName) {
this .fileName = fileName;
}
public void setMyFile(FilemyFile) {
this .myFile = myFile;
}
public StringgetImageFileName() {
return imageFileName;
}
public String getCaption(){
return caption;
}
public void setCaption(String caption) {
this .caption = caption;
}
public String getNewfilename() {
return newfilename;
}
public void setNewfilename(String newfilename){
this.newfilename =newfilename;
}
public String getGroupid() {
return groupid;
}
public void setGroupid(String groupid) {
this.groupid = groupid;
}
}
struts2配置文件
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache SoftwareFoundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<constantname="struts.i18n.encoding" value="utf-8" />
<include file="conf/struts/*.xml"/>
<constantname="struts.multipart.saveDir" value="/tmp"/> <!--配置临时文件目录 -->
<constantname="struts.multipart.maxSize"value="10000000"/> <!--配置上传文件大小 -->
<constantname="struts.action.extension"value="action"></constant>
<package name ="fileUploadDemo"extends ="struts-default">
<action name ="fileUpload" class="ul.FileUploadAction">
<interceptor-ref name="fileUploadStack"/>
</action>
</package>
</struts>
JSP页面
需要:jquery.min.js,ajaxfileupload.js
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s"uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title></title>
<script type="text/javascript"src="<%=request.getContextPath()%>/sys/jquery.min.js"></script>
<script type="text/javascript"src="<%=request.getContextPath()%>/sys/ajaxfileupload.js"></script></head>
<body>
<input type='button' value='增加'onClick='addFile()'/>
<input type='button' value='提交'onClick='uploadFile()'/>
<divid="mydiv">
</div>
</body>
<script type="text/javascript">
var formNum=0;
function addFile()
{
formNum = formNum + 1;
var file="<spanid='span_"+formNum+"'>";
file=file+"文件:<input type='file'id='file_" + formNum +"' name='myFile'/>";
file=file+"<input type='button'value='删除' id='delfile'οnclick='dlefile(this)'/><br>";
file=file+"</span>";
$("#mydiv").append(file);
}
function dlefile(obj)
{
$(obj).parent().remove();
}
function uploadFile()
{
var filelist=$(":file");
for(vari=0;i<filelist.length;i++)
ajaxFileUpload(filelist[i]);
}
function ajaxFileUpload(myFile)
{
vargroupid=myFile.id.split("_")[1];
$.ajaxFileUpload
(
{
url:'fileUpload.action',
secureuri:false,
fileElementId:myFile.id,
dataType :'json',
data:{"newfilename": "ccc123","groupid": groupid},
success:function (data, status)
{
$("#span_"+groupid).html("上传状态:"+data.result+"|服务器文件名称:"+data.filename+"|文件大小:"+data.fileszie+"<br>");//remove();
},
error:function (data, status, e)
{
alert("error");
}
}
);
returnfalse;
}
</script>
</html>