如何在Struts2中实现文件上?
如何在Struts2中实现文件上传
前段时间Apache发布了Struts 2。0。6 GA,所以本文的实现是以该版本的Struts作为框架的。以下是例子所依赖类包的列表: 清单1 依赖类包的列表 首先,创建文件上传页面FileUpload。jsp,内容如下: Struts 2 File Upload 清单2 FileUpload。
jsp 在FileUpload。jsp中,先将表单的提交方式设为POST,然后将enctype设为multipart/form-data,这并没有什么特别之处。接下来,标志将文件上传控件绑定到Action的myFile属性。其次是FileUploadAction。
java代码: package tutorial; 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。
util。Date; import org。apache。struts2。ServletActionContext; import com。opensymphony。xwork2。ActionSupport; public class FileUploadAction extends ActionSupport { private static final long serialVersionUID = 572146812454l ; private static final int BUFFER_SIZE = 16 * 1024 ; private File myFile; private String contentType; private String fileName; private String imageFileName; private String caption; public void setMyFileContentType(String contentType) { this 。
contentType = contentType; } public void setMyFileFileName(String fileName) { this 。fileName = fileName; } public void setMyFile(File myFile) { this 。
myFile = myFile; } public String getImageFileName() { return imageFileName; } public String getCaption() { return caption; } public void setCaption(String caption) { this 。
caption = caption; } private static void copy(File src, File dst) { try { InputStream in = null ; OutputStream out = null ; try { in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE); out = new BufferedOutputStream( new FileOutputStream(dst), 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(); } } private static String getExtention(String fileName) { int pos = fileName。
lastIndexOf( " 。 " ); return fileName。substring(pos); } @Override public String execute() { imageFileName = new Date()。
getTime() + getExtention(fileName); File imageFile = new File(ServletActionContext。getServletContext()。
getRealPath( " /UploadImages " ) + " / " + imageFileName); copy(myFile, imageFile); return SUCCESS; } } 完成 丢弃。
答:众所周知,Struts 2是以Webwork 2作为基础发展出来。而在Webwork 2.2之前的Webwork版本,其自身有一套控制反转的实现,Webwork...详情>>