我正在进行一项大学任务,我们正在建立一个网站,允许学生查看可用的课程,登记,向他们展示他们的时间表等。当用户看到他的时间表时,它是用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解决方案是个好主意吗?
答案 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网站。