package org.cxg.action; import java.io.File; import java.io.IOException; import java.util.Random; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FileUtils; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class UploadAction extends ActionSupport{ private File[] file; private String[] fileFileName; @Override public String execute() throws Exception{ HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html;charset=GBK"); response.setCharacterEncoding("GBK"); String path = ServletActionContext.getServletContext().getRealPath("/"); System.out.println(path); for(int i = 0 ; i < file.length ; i++){ File io = new File(path,fileFileName[i]); try { FileUtils.copyFile(file[i], io); //上传成功 response.getWriter().print("{'success':true,'message':'上传成功'}"); } catch (Exception e) { //上传失败 response.getWriter().print("{'success':true,'message':'上传失败'}"); e.printStackTrace(); } } return null; } public File[] getFile() { return file; } public void setFile(File[] file) { this.file = file; } public String[] getFileFileName() { return fileFileName; } public void setFileFileName(String[] fileFileName) { this.fileFileName = fileFileName; } } Action中用来接受文件并保存到服务器 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK" /> <title></title> <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" mce_href="ext/resources/css/ext-all.css" /> <link rel="stylesheet" type="text/css" href="ext/css/Ext.ux.UploadDialog.css" mce_href="ext/css/Ext.ux.UploadDialog.css" /> <mce:script type="text/javascript" src="ext/adapter/ext/ext-base.js" mce_src="ext/adapter/ext/ext-base.js"></mce:script> <mce:script type="text/javascript" src="ext/ext-all.js" mce_src="ext/ext-all.js"></mce:script> <mce:script type="text/javascript" src="ext/Ext.ux.UploadDialog.js" mce_src="ext/Ext.ux.UploadDialog.js"></mce:script> <mce:script type="text/javascript" src="ext/Ext.ux.UploadDialog.packed.js" mce_src="ext/Ext.ux.UploadDialog.packed.js"></mce:script> <!--语言包,根据需要添加或修改 <mce:script type="text/javascript" src="./locale/ru.utf-8.js" mce_src="locale/ru.utf-8.js"></mce:script> --> <mce:script type="text/javascript"><!-- function image() { var dialog = new Ext.ux.UploadDialog.Dialog({ title: '文件上传', url: 'upload.action', autoCreate: true, closable: true, collapsible: false, draggable: true, minWidth: 400, minHeight: 200, width: 400, height: 350, permitted_extensions: ['JPG','jpg','jpeg','JPEG','GIF','gif','pdf','txt','zip','ZIP','doc','DOC'], proxyDrag: true, resizable: true, constraintoviewport: true, reset_on_hide: false, allow_close_on_upload: true }); dialog.show('show-button'); dialog.on('uploadsuccess', onUploadSuccess); }; function onUploadSuccess(dialog, filename, resp_data, record){ // 回调函数代码 } // --></mce:script> </head> <body> <a href="#" mce_href="#" οnclick="image();">图片上传</a> </body> </html> Html页面中显示Extjs上传对话框