以下利用Commons-fileupload完成文件的上传
1.在index.jsp页面编写代码
<form action="upload.action" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
2.在struts2.xml配置文件上传类型
<package name="team" extends="struts-default" namespace="/">
<!--上传-->
<action name="upload" class="com.iteye.action.TestAction" method="upload">
<result>/index.jsp</result>
<!-- 定义允许上传的类型 -->
<param name="allowedTypes">image/jpg,image/bmp</param>
</action>
</package>
3.在Action完成上传操作,这里将文件保存到upload文件夹
public class TestAction extends ActionSupport{
private File file;
private String fileContentType;
private String fileFileName;
private String allowedTypes
public void setAllowedTypes(String allowedTypes) {
this.allowedTypes = allowedTypes;
}
public void setFile(File file) {
this.file = file;
}
public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
/**
* 上传
* @throws Exception
*/
public String upload() throws Exception{
System.out.println(allowedTypes);
String p[] = allowedTypes.split(",");
for(int i=0;i<p.length;i++){
if(p[i].trim().equals(fileFileName.substring(fileFileName.indexOf(".")+1))){
System.out.println("类型错误,这是不允许上传的类型");
return INPUT;
}
}
//类型正确执行以下代码
InputStream in = new FileInputStream(file);
String path = ServletActionContext.getServletContext().getRealPath("/upload");
String newName = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());
newName += fileFileName.substring(fileFileName.indexOf("."));
File f = new File(path,newName);
OutputStream os = new FileOutputStream(f);
byte[] buffer = new byte[1024];
int length = 0;
while((length=in.read(buffer))>0){
os.write(buffer, 0, length);
}
in.close();
os.close();
return SUCCESS;
}
}