首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

在Struts 2中实现单文件下传

2012-10-07 
在Struts 2中实现单文件上传实现原理Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将

在Struts 2中实现单文件上传

实现原理

Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。

其次是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;    }     }
?

?

热点排行