RSS
热门关键字:  数据挖掘  人工智能  数据仓库  搜索引擎  数据挖掘导论

在Struts 2中实现文件上传(1)

来源: 作者: 时间:2007-05-25 点击:

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

具体实现 数据挖掘研究院

前段时间Apache发布了Struts 2.0.6 GA,所以本文的实现是以该版本的Struts作为框架的。以下是例子所依赖类包的列表:

498)this.style.width=498;" onmousewheel = "javascript:return big(this)" src="/files/uploadimg/20070326/1530300.jpg">
清单1:依赖类包的列表

首先,创建文件上传页面FileUpload.jsp,内容如下: 数据挖掘研究院

清单2:FileUpload.jsp 数据挖掘实验室

<% @ page language = " java " contentType = " text/html; charset=utf-8 " 数据挖掘研究院

pageEncoding = " utf-8 " %>

<% @ taglib prefix = " s " uri = " /struts-tags " %> 数据挖掘研究院

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

数据挖掘研究院

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html xmlns ="http://www.w3.org/1999/xhtml" >

< head >

< title > Struts 2 File Upload </ title >

</ head >

< body >

< s:form action ="fileUpload" method ="POST" enctype ="multipart/form-data" >

< s:file name ="myFile" label ="Image File" />

< s:textfield name ="caption" label ="Caption" />       

< s:submit />

</ s:form >

</ body >

</ html >

数据挖掘研究院

数据挖掘实验室

在FileUpload.jsp中,先将表单的提交方式设为POST,然后将enctype设为multipart/form-data,这并没有什么特别之处。接下来,<s:file/>标志将文件上传控件绑定到Action的myFile属性。 数据挖掘研究院

其次是FileUploadAction.java代码: 数据挖掘实验室

清单3:tutorial/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;

}    

} 数据挖掘实验室

数据挖掘研究院

数据挖掘研究院


共4页: 1 [2] [3] [4] 下一页
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
匿名?
热点关注
相关文章