commons-fileupload上传示例

此上传示例是从项目中提取出来的
是一个图片上传的示例
功能包括:
   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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值