您的位置:首页 > 编程语言 > Java开发

struts2 的文件上传

2014-02-15 22:55 309 查看
Struts2的文件上传:

在struts2-default中的默认配置文中,struts-default.xml,其中的defaultStack中,fileuploadinterceptor是默认的拦截器栈,所以在用户在客户端通过jsp页面请求服务器的Action时,就会通过这个fileuploadinterceptor拦截器,此时fileupload会将文件保存呢到指定的位置。但是其内部必须提供了相应的约束。


1、编写文件上传页面

1) 必须input type="file" 有name属性

2) form提交方式 必须采用 post方式

3) enctype="multipart/form-data"

* multipart/form-data 来自MIME协议

------------------------------------- 分隔线

username = 123

-------------------------------------

文件上传内容

-------------------------------------

public class FileUploadAction extends ActionSupport{

// 接收文件上传的数据

private File upload ; // 和页面中的file标签的name属性名字必须相同

private String uploadContentType ; // 上传文件的类型 “file标签name属性名+ContentType”

private String uploadFileName ; //上传文件的名称 “页面的file标签name属性名+FileName”

public File getUpload() {

return upload;

}

public void setUpload(File upload) {

this.upload = upload;

}

public String getUploadContentType() {

return uploadContentType;

}

public void setUploadContentType(String uploadContentType) {

this.uploadContentType = uploadContentType;

}

public String getUploadFileName() {

return uploadFileName;

}

public void setUploadFileName(String uploadFileName) {

this.uploadFileName = uploadFileName;

}

public String execute() throws Exception {

System.out.println("文件上传、、、");

// 在web项目中 获得绝对路径

ServletContext context = ServletActionContext.getServletContext() ;

String uploadDir = context.getRealPath("/upload");

// 将文件写入到指定的目录

// 当经过默认拦截器的fileupInterceptor时候,已经将客户端要上传的文件上传到服务器的指定位置,文件的类型是File,要是想把文件保存到自己想保存的位置,

// 只需要用IO流将其封装(读取到流中,封装为InputStream),并用流写入到相应的目标位置即可。

InputStream in = new BufferedInputStream(new FileInputStream(upload));

OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(uploadDir,uploadFileName)));

byte[] b = new byte[1024];

int len = -1 ;

while(( len = in.read(b)) != -1){

out.write(b, 0, len);

}

in.close();

out.close();

return SUCCESS ;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: