如何使用JSP和servlet构建目录和文件层次结构上载功能?

时间:2012-10-31 11:11:35

标签: jsp servlets file-upload

我正在使用JSP和servlet构建应用程序。我正在尝试在其中构建文件上传功能。我想确保我在本地创建的文件夹结构传输到Apache Web服务器。有什么方法可以达到这个目的?我有一个表单,我使用输入文件控件给出特定文件夹的路径。当我提交表单时,应该在Web服务器上创建表单中所选文件夹下的文件和文件夹的任何层次结构。如果文件夹包含任何文件,则文件应自动转移到服务器。是否可以制作这种功能?

1 个答案:

答案 0 :(得分:0)

上传文件时,通常只获取文件名和文件内容。您通常也不会获得整个客户端磁盘文件系统路径。只有可怜的MSIE webbrowser会因安全漏洞错误地发送此信息,但您应该在/\上删除此内容并最终只使用文件名,或者如果您正在使用Apache Commons FileUpload,FilenameUtils#getName()

对于服务器端文件夹结构,只需将上传的文件以唯一名称存储在固定文件夹中。不要不必要地创建其他文件夹,除非该文件夹应该识别登录用户或其他东西,当然。您可以使用File#createTempFile()根据文件名前缀和文件名后缀(扩展名)创建唯一的文件名,以避免重写的同名文件被覆盖的上传文件。

关于服务器端上传文件夹位置,请确保它不在服务器文件夹结构中的webapp的deploy文件夹中。每当您重新部署Web应用程序时,这都会丢失,原因很简单,上传后新添加/更改的文件未包含在待部署的WAR中。

关于提供文件,只需将上传文件夹位置作为另一个虚拟主机添加到服务器配置中。目前还不清楚你对“Apache web服务器”究竟是什么意思,因为Apache是​​一家庞大的软件公司,它构建了许多软件产品。你的意思是Apache HTTPD吗? Apache Tomcat? Apache TomEE? Apache Geronimo?等等。当您在JSP / Servlet上下文中讨论时,我将假设Apache Tomcat。然后转到这个答案:How I save and retrieve an image on my server in a java webapp