允许用户上传文件

时间:2011-08-05 11:53:35

标签: java xml servlets file-upload

我正在进行一项大学任务,我们正在建立一个网站,允许学生查看可用的课程,登记,向他们展示他们的时间表等。当用户看到他的时间表时,它是用XML生成的。我们正在使用XSLT来查看它(as in a previous question I asked)。目前有两种不同的XSLT文件,用户可以选择(通过下拉菜单)他想要使用的“主题”。

我们被要求允许用户上传自己的.xsl文件,并将其添加到主题列表中(任何人都可以使用)。为了满足这种需求,我创建了一个名为timetable_themes.xml的新XML文件,它看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TimetableThemes SYSTEM "timetable_themes.dtd" >
<TimetableThemes>
  <Theme>
    <Name>Classic</Name>
    <FileName>classic.xsl</FileName>
  </Theme>
  <Theme>
    <Name>Bullets</Name>
    <FileName>bullets.xsl</FileName>
  </Theme>
</TimetableThemes>

此文件列出了可用的不同主题及其文件名。此XML文件和XSL文件驻留在WebContent/timetable。目前可用的两个主题是由我们设计的,但我们需要允许用户上传他的。

我的问题是 - 如何允许用户上传文件,如何选择将其保存在服务器中?第三 - 我的主题列表的XML解决方案是个好主意吗?

2 个答案:

答案 0 :(得分:1)

Shalom Amir,使用this从已构建的表单中检索文件上传。

答案 1 :(得分:1)

  

如何允许用户上传文件

在HTML / JSP端使用<form method="post" enctype="multipart/form-data"><input type="file">并使用Apache Commons FileUpload来解析它,或者当您已经在使用支持Servlet 3.0的容器时,使用HttpServletRequest#getParts()。另请参阅How to upload files to server using JSP/Servlet?


  

如何选择将它们保存在服务器中的位置?

至少不在公共网站内容中。重新部署Web应用程序或重新启动服务器时,所有新文件都将丢失。使用FileOutputStream将它们存储在本地磁盘文件系统中,或者如果不是选项,则使用PreparedStatement#setBinaryStream()在数据库中存储它们。


  

是我主题列表的XML解决方案一个好主意吗?

这不是一个可以客观回答的问题。这实际上取决于太多因素。尝试讨论论坛而不是Q&amp; A网站。