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

Struts2文件上传

2015-10-13 08:45 369 查看
1.首先先到页面中定义一个表单,注意表单的enctype属性为multipart/form-data,method属性为post。

<s:form action="upload" method="post" enctype="multipart/form-data">
<s:file name="doc" label="docname"></s:file>
<s:textfield name="docDesc" label="docdesc"></s:textfield>
<s:submit value="提交"/>
</s:form>
2.然后就是Action的配置,在Action中定义File类型的成员,成员的名和表单中file中的name属性值相同,例如这里为doc,然后生成相应的getter,setter方法。如果要得到上传的文件名和文件类型,需要在Action中定义成员,成员名为表单中file的属性name的值加ContentType和FileName,例如这里是docContentType和docFileName,下面是Action中的代码

package com.seven.upload;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

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

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
private File doc;//file属性的文件
private String docContentType;//文件的类型
private String docFileName;//文件的名称

public File getDoc() {
return doc;
}

public void setDoc(File doc) {
this.doc = doc;
}

public String getDocContentType() {
return docContentType;
}

public void setDocContentType(String docContentType) {
this.docContentType = docContentType;
}

public String getDocFileName() {
return docFileName;
}

public void setDocFileName(String docFileName) {
this.docFileName = docFileName;
}

public String execute() throws Exception {

//获取要上传的文件路径
String dir=ServletActionContext.getServletContext().getRealPath("/files/"+docFileName);
System.out.println(dir);

//输入流
FileInputStream in=new FileInputStream(doc);
//输出流
FileOutputStream out=new FileOutputStream(dir);
IOUtils.copy(in, out);
return super.execute();
}

}
其中IOUtils是有apache提供的一个类,在commons-io-2.0.1.jar这个包下。是针对IO流的一个类,其中copy方法需要两个参数,一个输入流和一个输出流,就可以完成IO流的操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: