Struts2.x进行文件上传和下载
文件上传
文件上传要点:
1.form表单 的方法必须是post enctype必须是 multipart/form-data
<form action=“” method=”post” enctype=”multipart/form-data”>
单个文件上传:
<form>
Username:<input type=”text”name=”username”/>
File:<input type=”file”name=”myfile”/>
<input type=”submit”value=”submit”/>
</form>
2.处理action的属性定义
private String username;
private File myfile;
Private String myfileFileName; 必须遵循的命名规则xxxFileName
Private String myfileContentType;
必须遵循的命名规则xxxContentType xxx指的是form表单的name属性
生成setter和getter方法
3.execute里面的方法
1.先获得上传到哪里 即确定path路径
2.得到输入输出流
3.操作输入输出流
4.关闭资源文件 IO流
①定义路径
String path=”e:”+File.separator+”test”
②获得输入输出流
InputStream inputStream=new FileInputStream(myfile);
File newfile=new File(path,myfileFileName)
OutputStream outputStream=new FileOutputStream(newfile)
③操作io流
byte[] buffer=new byte[1024];
int len=0;
while( (len=inputStream.read(buffer))!=-1 ){
outputStream.write(buffer,0,len);
}
④关闭资源文件
inputStream.close();
outputStream.close();
多个文件上传:
<form>
Username:<input type=”text”name=”username”/>
File:<input type=”file”name=”myfile”/>
File:<input type=”file”name=”myfile”/>
File:<input type=”file”name=”myfile”/>
<input type=”submit”value=”submit”/>
</form>
注意:File文件的name属性要相同
2.处理action的属性定义
private String username;
private List<File> myfile;
Private List<String> myfileFileName;
Private List<String> myfileContentType;
必须遵循的命名规则xxxFileName
必须遵循的命名规则xxxContentType xxx指的是form表单的name属性
生成setter和getter方法
Struts2.x很重要的一个特点就是能够自动赋值,即OGNL(对象图导航语言)
IO操作和单个文件上传类似,只是多了一个for循环。
如果自定义了拦截器,那么默认拦截器就放在自定义拦截器后面。可以自定义上传文件大小。属性是:maximumSize
进行文件上传时候记得method方法和enctype属性的设置
文件下载
比较简单:
1.在action类中定义一个获得输入流的方法
InputStream getDownloadStream(){
String path=”xxx”;
return ServletActionContext.getServletContext.getResourceAsStream(path);
}
2.配置
<result type=”stream”>
好几个参数
</result>