当前位置: 技术问答>java相关
熟悉OA系统“文档管理”的大虾请进....
来源: 互联网 发布时间:2017-04-09
本文导语: 增加文档时,上传文件附件,文件上传保存在服务器端系统目录下, 如果出现两份文档的文件附件重名,(要求是两份文件都可上传,浏览时 点击各自的链接显示相应的文件内容),这需要应该如何处理? | ...
增加文档时,上传文件附件,文件上传保存在服务器端系统目录下,
如果出现两份文档的文件附件重名,(要求是两份文件都可上传,浏览时
点击各自的链接显示相应的文件内容),这需要应该如何处理?
如果出现两份文档的文件附件重名,(要求是两份文件都可上传,浏览时
点击各自的链接显示相应的文件内容),这需要应该如何处理?
|
你的问题实际上是这样:doc文件当然不能处理参数,处理参数必然是jsp或者servlet。事实上,url的请求带有doc后缀名或者其他后缀名都一样,例如你请求了http://www.mysite.com/mydoc.gif,但是可能返回的不是图片而是一个html。
我估计其做法大体上是这样,配置了一个servlet,并处理所有请求文件名为*.doc的,然后servlet整合其参数得到真正的doc文件名,然后重定向到那个文件。
我估计其做法大体上是这样,配置了一个servlet,并处理所有请求文件名为*.doc的,然后servlet整合其参数得到真正的doc文件名,然后重定向到那个文件。
|
还有就是"文件正文"的url是"/cgi/ldmsapp?funcid=...", ldmsapp应该是
Servlet吧?
但"1.doc"的url是"/cgi/ldmsapp/1.doc?funcid=", ldmsapp是目录,还是Servlet? 我搞晕了!
这个系统应该是用cgi-bin实现的。
实际上上传的每一个文件,都需要在数据库中为之分配一个独一无二的id作为实际文件名,而原文件名是记载在数据库中的
你在数据库中存储每个文件的实际名称,同时有一个唯一标识,你的唯一标识是指向正确的文件名,而实际名称显示给客户。
正确的文件名就是在用户上载时你为了防止重名分配给文件的名称。可以用实践来区分。从系统中取得当前时间,java.util.Date dd = new Date();
long fileName = new Long(dd.getTime()).toString();
这个问题越说越复杂了,其实没有那么难。
Servlet吧?
但"1.doc"的url是"/cgi/ldmsapp/1.doc?funcid=", ldmsapp是目录,还是Servlet? 我搞晕了!
这个系统应该是用cgi-bin实现的。
实际上上传的每一个文件,都需要在数据库中为之分配一个独一无二的id作为实际文件名,而原文件名是记载在数据库中的
你在数据库中存储每个文件的实际名称,同时有一个唯一标识,你的唯一标识是指向正确的文件名,而实际名称显示给客户。
正确的文件名就是在用户上载时你为了防止重名分配给文件的名称。可以用实践来区分。从系统中取得当前时间,java.util.Date dd = new Date();
long fileName = new Long(dd.getTime()).toString();
这个问题越说越复杂了,其实没有那么难。
|
rename the file,Ex: add a timestamp before the filename.
and add one more field in the table, Ex:
DISPLAY_NAME FILE_PATH
aa.DOC upload10068923200823_aa.doc
aa.DOC upload10068924902813_aa.doc
and add one more field in the table, Ex:
DISPLAY_NAME FILE_PATH
aa.DOC upload10068923200823_aa.doc
aa.DOC upload10068924902813_aa.doc
|
可以在IE里用JS来限制同时上传时不能有同名,然后文件保存在服务器上时用JAVA判断是否有同名文件存在,如果有,就改名。
可以建个表来保存原文件名和保存后的文件名。
可以建个表来保存原文件名和保存后的文件名。
|
为什么不为每个用户建不同的目录阿??或者
|
加上时间戳!
|
很简单,可以在tabel中增加一个binary类型的字段,将附件直接上传到数据库中,这样根本就不存在文件同名的情况,而且管理维护非常方便。
|
GZ
|
呵呵,在我以前做过的新闻管理系统里面也存在同样的问题。我的解决办法是改名,将原文件名加上文件的大小,构成新的文件名,这样改以后同名的机会很小的。不过我觉得楼上有几位朋友说的加上时间戳是最好的办法了,没有十全十美的解决办法,我想也没有像你说得那样刁钻的客户。
|
实际上上传的每一个文件,都需要在数据库中为之分配一个独一无二的id作为实际文件名,而原文件名是记载在数据库中的
|
其实不就是上传加时间戳,下载的时候用流输出,文件名用原始的.