一:文件上传
1:JSP页面
2:Struts2->Action
3: Struts.xml文件
从上面的步骤我们可以总结出:
Java Web上传文件的核心步骤
①:客户端上传文件、发送请求到Servlet或者(控制器)
②:服务器端:以I/O流的形式将上传的文件写到服务器的文件夹中
博主的是基于Struts2(c)实现文件上传下载的
我们对上面的代码进行优化
路径优化主要在于:磁盘路径+文件夹路径+不重名设置
I/O操作:使用第三方jar包
文件管理:每个用户的上传路径
优化(重构)
1). 添加属性(获取文件名称) //flagContentType互联网mime名称
2). IO优化:common-io第三方组件org.apache.commons.io下FileUtils,copyFile替换手写流
3). 路径优化:
a. 获得文件夹的真实路径
b.动态获得文件夹路径
4). 文件名优化:将当前系统时间连接在文件名称中。(防止文件重名)
5). 文件大小:
注意:Struts2的文件上传大小有默认限制"struts.multipart.maxSize",不可修改struts的原生配置文件。
在Struts.xml文件中配置常量:
用户文件夹管理:用户注册时,创建文件以ID为区分。
用户上传也以此路径访问。
用户上传文件的路径有必要存入数据库,以方便查找用户上传了哪些东西,也方便用户下载。
源代码: 别忘了给实例属性提供get/set方法
private File flag; private String flagFileName; private String dicectoryName; public String fileUp() throws Exception{ ServletContext ctx=ServletActionContext.getServletContext(); String path=ctx.getRealPath(dicectoryName)+"/"+System.currentTimeMillis()+flagFileName; File file=new File(path); FileUtils.copyFile(flag, file); return null; }
struts.xml
<package name="file" extends="struts-default" > <action name="fileUp" class="action.FileUpLoadAction" method="fileUp"> <param name="dicectoryName">/upLoad</param> </action> </package>
二:文件下载
Action
文件配置
完成配置文件 //查看org.apache.struts2.dispatcher.StreamResult