首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts2应用开发详解-14、文件下传和上载

2012-09-08 
Struts2应用开发详解--14、文件上传和下载一、文件上传?Struts2的文件上传需要commons-fileupload-1.2.1.jar

Struts2应用开发详解--14、文件上传和下载

一、文件上传

?

Struts2的文件上传需要commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar文件。

第一个为文件上传组件,第二个为文件操作组件。

各部分代码必须遵守如下规则

1、页面代码片段如下

<form enctype="multipart/form-data" action="/test/upfile.action" method="post">
??? <input type="file" name="photo" />
??? <input type="submit" value="上传"/>
?</form>

注意红色标准部分会影响Struts2控件对数据的封装。

?

2、java代码如下

package test;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;

public class UploadAction {

?private File photo;? //Struts2将上传的文件封装到该对象中。

?private String photoContextType; //文件属性
?private String photoFileName; //上传文件的名称,文件名格式必须为 文件对象变量名+FileName。

?public File getPhoto() {
??return photo;
?}

?public void setPhoto(File photo) {
??this.photo = photo;
?}

?public String getPhotoFileName() {
??return photoFileName;
?}

?public void setPhotoFileName(String photoFileName) {
??this.photoFileName = photoFileName;
?}
?
?public String execute() throws IOException{
??String filePath = ServletActionContext.getServletContext().getRealPath("/upfiles"); //获取文件存放路径
??
??File toFile = new File(new File(filePath) , photoFileName); //创建要保存的文件。
??
??if(photo != null){?//判断源文件是否存在
???if(!toFile.getParentFile().exists()){? //判断文件存放路径是否存在
????toFile.getParentFile().mkdirs();? //创建文件存放路径
???}
???FileUtils.copyFile(photo, toFile);? //文件拷贝,将源文件复制到目的文件中。用该封装类实现了文件保存。

???ActionContext.getContext().put("message", "上传成功!");
??}
??
??return "success";
?}
?
}

?

二、文件下载

1、页面代码如下

?

?<form enctype="multipart/form-data" action="/test/upfiles.action" method="post">
??<input type="file" name="photos" /></br>
??<input type="file" name="photos" /></br>
??<input type="submit" value="上传"/>

相对于一个文件的页面设置,只是根据需要添加文件路径即可。

?2、java代码如下

?

?package test;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;

public class UploadsAction {

?private File[] photos;
?private String[] photosFileName;
?
?public File[] getPhotos() {
??return photos;
?}

?public void setPhotos(File[] photos) {
??this.photos = photos;
?}

?public String[] getPhotosFileName() {
??return photosFileName;
?}

?public void setPhotosFileName(String[] photosFileName) {
??this.photosFileName = photosFileName;
?}

?public String execute() throws IOException{
??String filePath = ServletActionContext.getServletContext().getRealPath("/upfiles");
??System.out.println(filePath);
??if(photos != null && photos.length > 0){
???File pf = new File(filePath);
???if(!pf.exists())pf.mkdirs();
???
???for(int i=0;i<photos.length;i++){
????File toFile = new File(pf,photosFileName[i]);

????FileUtils.copyFile(photos[i], toFile);
???}
???ActionContext.getContext().put("message", "上传成功!");
??}
??
??return "success";
?}

?
}

?

java代码中只需要对应的将属性变量改为数组类型,然后循环获取即可。

热点排行