posts - 12,  comments - 2,  trackbacks - 0
JSP/Servlet: Oreilly MultiPartRequest 档案上传  http://caterpillar.onlyfun.net/GossipCN/JSPServlet/FileUpload.htm
使用浏览器进行档案上传时,是使用multipart/form-data编码,然而Servlet容器并不会自动帮我们处理编码,而必须由程式设计人员自行处理,在这个部份,我们可以使用Oreilly所提供的上传套件MultiPartRequest,您可以至以下的网址下载,档案是cos- 05Nov2002.zip:

http://www.servlets.com/cos/index.html

解开zip档案之后,在lib目录下可以找到cos.jar,将它复制至您的Web应用程式的WEB-INF/lib下就可以了,基本上, Oreilly的MultiPartRequest相当的容易使用,它可以同时处理多个档案的上传,并且提供多个方法可以让您取得上传档案的相关资讯。

这边提供一个简单的例子,首先撰写上传的表单:

  • form.htm
<html> 
<head>
<title>档案上传</title>
<meta http-equiv="Content-Type"
content="text/html; charset=Big5">
</head>
<body>
<b>档案上传</b></font></p>

<form name="UploadForm"
enctype="multipart/form-data"
method="post" action="upload.jsp">
<input type="file" name="File1" size="20" maxlength="20">
<br>
<input type="file" name="File2" size="20" maxlength="20">
<br>
<input type="submit"value="上传">
</form>

</body>
</html>

这边示范两个档案的上传,表单的enctype必须设定为multipart/form-data,而上传方法是post,表单元件的输入型态是 file,当然,上传的档案数在实际应用时,是可以用JavaScript等方法来动态进行选择的。

上传的动作处理,撰写在upload.jsp中:

  • upload.jsp
<%@page import="com.oreilly.servlet.MultipartRequest" %> 
<%
String saveDirectory = "/home/caterpillar/files/";
// 限制上传之档案大小为 5 MB
int maxPostSize = 5 * 1024 * 1024 ;
MultipartRequest multi = new MultipartRequest(request ,
saveDirectory , maxPostSize, "MS950");
out.println("档案上传OK");
%>

注意到程式中import了com.oreilly.servlet.MultipartRequest, MultipartRequest可以限制档案上传的大小,最后一个参数是上传档案名称的编码,如果不设定的话,预设是ISO-8859-1,为了支援繁体中文档名,程式中设定为MS950,如果要支援简体中文档名,可以设定为GB2312。

基本上您只要建立MultipartRequest物件就完成了档案上传的处理动作,如果要额外取得档案资讯,您可以从 MultipartRequest物件取得,例如getFileNames()、getContentType()、getFile()等等, getFileNames()所取得的是Enumeration型态之物件,可以这么使用:
Enumeration filenames = multi.getFileNames();
while(filenames.hasMoreElements()) {
    String filename = (String) filenames.nextElement();
     out.println("上传了档案" + filename + "<br>");
}
 
其它有关于MultipartRequest的说明,您可以参考下载的zip档中之api说明。

posted on 2008-06-20 11:23 doodoosun 阅读(184) 评论(0)  编辑  收藏 所属分类: Java 相关

只有注册用户登录后才能发表评论。


网站导航:
 

<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(1)

随笔分类(6)

随笔档案(11)

文章分类(30)

文章档案(34)

搜索

  •  

最新评论

阅读排行榜

评论排行榜