分类: Java
2012-02-21 13:55:09
l 程序开发目的:
针对项目中文档路径访问,用户路径不一致的问题,进行文档访问页面的开发。以实现在系统文档管理中权限访问和文件下载的功能。
l 程序设计思路
程序实现为不同用户分配文档访问物理路径保存到数据库中,登录认证后,查看其所在物理路径下的文件结构,点击文档可下载;将指定文件下载访问路径到系统,可以过滤权限下载文件。
l 存在问题和解决办法
问题1:页面中的访问路径不能带有特殊字符
解决办法:将文件访问路径传到连接之前编码:filePath=encodeURIComponent(encodeURIComponent("${file.filePath}"));;然后跳转连接后,容器接受会自动解码一次,在servlet中获取路径时解码:String thepath = URLDecoder.decode(req.getParameter("file"), "utf-8");,将解码路径作为下载文件函数的参数找到文件的下载路径,成功带有特殊字符的文件。虽然不能显示出中文文件名称,但是用户上传文件的文件名称不会受到限制。
问题2:文件路径获取
解决办法:登录系统,会看到文件树形结构,选择下载文件右击属性,在地址URL中可以看到文件的连接地址,复制即可找到文件的下载路径,将文件下载路径放到p6系统对应的文档说明中。
问题3:文件下载的名称不能正常显示
解决办法:将对url中的参数解码过的路径再编码:new String( filenameWithoutPath.getBytes("GBK"), "ISO-8859-1" );后得到正常的中文文件名称。
问题4:为什么不将文件放到工程项目中
因为工程项目中的程序打包之后发布到weblogic中,以后用户上传的文件就不能包含在发布过程序包中了,文件就下载不到文件了。
l 最终处理结果:
文件还是通过ftp上传到应用服务器的某个文件夹下,用户通过浏览器登录认证后,查看用户的文件树形结构,下载文件,或获取文件路径复制到系统的文件下。用户进入到系统,打开文档下载的路径,判断用户是否登录过系统,如果登录过系统,就直接下载;如果没有登录过系统,需要认证,再下载。并设置了30分钟的session有效时间。