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

struts2 文件上传下载

2012-08-07 15:09 246 查看
文件上传

Struts2文件上传

<form method="post"  action="fileupload.action" enctype="multipart/form-data">

<table>

<tr><td><input type="file" width="300px" name="myfile"/></td></tr>

<tr><td><input type="file" width="300px" name="myfile"></td></tr>

<tr><td><input type="file" width="300px" name="myfile"></td></tr>

<tr><td><input type="submit" value="上传"></td></tr>

</table>

</form>


需用form表单,Form表单的提交方法为post,加上enctype="multipart/form-data"

多文件上传的名字一样,除了要用form之外,其它的基本跟用普通文本框传值到后台一样

<action name="fileupload" class="utilAction" method="fileupload"/>


Java代码:

private List<File> myfile;

private List<String> myfileFileName;

public String fileupload(){

FileInputStream fin =null;

FileOutputStream fout =null;

byte[] buffer;

String filename ;

try {

for(int i=0;i<myfile.size();i++){

fin = new FileInputStream(myfile.get(i));

filename = PATH + myfileFileName.get(i);

fout = new FileOutputStream(new File(filename));

buffer = new byte[1024];

int count;

count = fin.read(buffer);

while(count>0){

fout.write(buffer);

count = fin.read(buffer);

}

System.out.println("上传成功");

}

fout.flush();

fin.close();

fout.close();

} catch (Exception e) {

e.printStackTrace();

}

return null;

}


可以看出java代码也没有什么不同,就是有一个file的list类,接收file,并用io流写入到服务器硬盘就行存储就行 没有什么特殊之处

用struts2的文件上传要注意的地方有几个:

1、 页面上用form表单,并用post提交,加上enctype="multipart/form-data"

2、 不论是多个文件还是一个文件,页面file标签name和后台java代码有绑定,比如:页面file标签name为“*****”,则后台定义的三个变量(接收文件,接收文件名,接收文件类型)应该相应的依次是:“****”、“*****FileName”、“*****ContentType”,配有相应set和get方法即可

Struts2下载

页面

<a href="filedownload.action?filename=1">点击下载</a>


strut2配置

<action name="filedownload" class="utilAction" method="filedownload">

<param name="directory">f:/download/</param>

<result name="success" type="stream">

<!-- 指定下载文件的内容类型,text/plain是默认类型 -->

<param name="contentType">text/plain</param>

<!-- inputName默认值是inputStream,如果action中用于读取下载文件内容的属性名是inputStream,那么可以省略这个参数 -->

<param name="inputName">inputStream</param>

<!--动态获取文件名,从Action中的取得filename-->

<param name="contentDisposition">

attachment;filename="${filename}"

</param>

<param name="bufferSize">2048</param>

</result>

</action>


java后台代码

public String filedownload(){

if(filename == null){

return null;

}

else{

return SUCCESS;

}

}

public InputStream getInputStream(){

String dir = directory + filename + ".jpg";

FileInputStream fin = null;

try {

fin = new FileInputStream(dir);

} catch (FileNotFoundException e) {

e.printStackTrace();

}

return fin;    //如果dir是绝对路径

//        return ServletActionContext.getServletContext().getResourceAsStream(dir);    //如果dir是Resource下的相对路径

}


文件下载关键之处在于 action中的 public InputStream getInputStream() 方法,struts.xml中 <param name="inputName">inputStream</param>最终下载的用的就是这个方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: