此上传示例是从项目中提取出来的
是一个图片上传的示例
功能包括:
1.上传文件类型检查
2.上传文件大小控制
3.解决中文文件名乱码
引入的.jar文件:
commons-fileupload-1.2.1.jar
commons-io-1.2.jar
http://kjah.iteye.com
upload.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>图片上传</title>
<script>
function form_submit(){
var img=document.getElementById("bg_img").value;
if(img==""){
alert("请选择文件");
return false;
}
var rex=/(\.jpg|\.gif|\.png)$/i;
if(!rex.test(img)){
alert("文件类型错误");
return false;
}
}
</script>
</head>
<body>
<form action="upload_commons.jsp" method="post"
enctype="multipart/form-data" name="form1" οnsubmit="return form_submit();">
背景图:<br/>
<input type="file" name="bg_img" id="bg_img" UNSELECTABLE="on"><br/>
<input type="submit" name="Submit" value="上传">
</form>
</body>
</html>
upload_commons.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="org.apache.commons.fileupload.*,org.apache.commons.fileupload.disk.*,java.io.*,java.util.*" %> <% String realPath=session.getServletContext().getRealPath("/"); String uploadPath=realPath+"\\upload\\"; String tempPath=realPath+"\\upload_temp\\"; DiskFileUpload fu = new DiskFileUpload(); fu.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB fu.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb fu.setRepositoryPath(tempPath); // 设置临时目录 fu.setHeaderEncoding("UTF-8");//设置字符集 防止中文文件名乱码 List fileItems = fu.parseRequest(request); //得到提交的数据 Iterator i = fileItems.iterator(); String allowExts=".jpg.jpeg.gif.png"; FileItem imgFile=null; try{ while(i.hasNext()) { FileItem fi = (FileItem)i.next(); String fileName = fi.getName();// 获得文件名,其中包括用户提交的路径即html file的value if(fileName!=null) { String fileExt = fileName.substring(fileName.lastIndexOf(".")); if(allowExts.indexOf(fileExt.toLowerCase())==-1){ out.println("上传失败!此文件类型不允许上传"); return; } if(fi.getFieldName().equals("bg_img")){//多文件的话判断html file的name imgFile=fi; } } } if(imgFile!=null){ String imgFileName=imgFile.getName(); imgFileName=imgFileName.substring(imgFileName.lastIndexOf("\\")+1); File fImg=new File(uploadPath+imgFileName); if(fImg.exists()){ out.println("上传失败!文件已存在,请重命名后上传"); }else{ imgFile.write(fImg); out.println("文件上传成功!"); } }else{ out.println("上传失败!文件丢失"); } }catch(FileUploadBase.SizeLimitExceededException e){ out.println("上传失败!文件大小超出,最大上传限制4M"); } %> <div><a href="upload.html">返回</a> <a href="#" οnclick="window.close()">关闭</a></div>