JavaServlet之文件上传(一)

来源:互联网 发布:网站模板源码 编辑:程序博客网 时间:2024/05/20 00:10
文件上传


fileupload工具所需要的jar包
commons-fileupload-1.3.jar
commons-io-2.4.jar




文件上传示例代码:
JSP页面:
<form action="/TestServlet/upload" method="post" enctype="multipart/form-data">
Username: <input type="text" name="username" /> <br/>
password: <input type="text" name="password" /> <br/>
Upload: <input type="file" name="file" /> <br/>
<input type="submit" name="submit" value="上传" />
</form>










1. 如何限制文件大小?
// 获取上传文件的大小(以byte为单位)
long size = item.getSize();
System.out.println("该文件的大小是:" + size);
if(size > 1*1024*1024) {
// System.out.println("文件大太了");
response.sendRedirect("/TestServlet/uploadFileTooBig.jsp");
return;
}


2. 如何限制上传文件的类型?
文本类型:text/plain
图片类型:image/bmp, image/pjpeg




String contentType = item.getContentType();
System.out.println("你上传的文件类型是:" + contentType);
// 上传的文件类型不是bmp
if(!"image/bmp".equals(contentType)) {
//... 
}




3. 如何获取表单里各个输入框的值?
// 如果是普通字段
if(item.isFormField()) {
// FileItem.getString()方法可以获取普通字段的值。
String textName = item.getFieldName();
if("username".equals(textName)) {
System.out.println("username=" + item.getString("utf-8"));
} else if("password".equals(textName)) {
System.out.println("password=" + item.getString("utf-8"));
}





4. 如何解决上传文件的中文乱码问题?
(1) 普通字段:FileItem.getString("utf-8");
(1) 上传字段:FileUpload.setHeaderEncoding("utf-8")




上传文件成功后,应该将临时文件删除,否则会占用服务器的硬盘空间。 [上传文件超过默认10K,就会使用临时文件]
FileItem.delete()方法会将临时文件夹temp里的文件全部删除。
[注意:在关闭IO流后再删除]






5. JSP页面显示图片 [切忌图片不要是中文名]
<img src="<%=basePath%>/upload/2.jpg" />