码迷,mamicode.com
首页 > Web开发 > 详细

jsp上传文件

时间:2018-02-04 13:48:17      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:efi   dede   else   pos   信息   长度   ssi   blog   rtc   

我是一名初学jsp菜鸟,今天就把自己所写的jsp上传文件的代码给大家分享一下,希望和大家多多交流,互相学习。望指教!

一、单纯的上传文件

 

 1 <%
 2         request.setCharacterEncoding("utf-8");
 3         String uploadFileName="";    //上传的文件名
 4         String fieldName="";            //表单字段元素的name属性值
 5         //请求信息中的内容是否是multipart类型
 6         boolean isMultipart=ServletFileUpload.isMultipartContent(request);
 7         //上传文件的存储路径(服务器文件系统上的绝对文件路径)
 8         String uploadFilePath=request.getSession().getServletContext().getRealPath("upload/");
 9         if(isMultipart){
10             FileItemFactory factory=new DiskFileItemFactory();
11             ServletFileUpload upload=new ServletFileUpload(factory);
12             try{
13                 //解析form表单中所有文件
14                 List<FileItem> items=upload.parseRequest(request);
15                 Iterator<FileItem> iter=items.iterator();
16                 while(iter.hasNext()){        //依次处理每个文件
17                     FileItem item=(FileItem)iter.next();
18                     if(item.isFormField()){        //普通表单字段
19                         fieldName=item.getFieldName();        //表单字段的name属性值
20                         if("user".equals(fieldName)){
21                             //输出表单字段的值
22                             out.print(item.getString("utf-8")+"上传了文件<br/>");
23                         }
24                     }else{    //文件表单字段
25                         String fileName=item.getName();
26                         if(fileName!=null&&!"".equals(fileName)){
27                             File fullFile=new File(item.getName());
28                             File saveFile=new File(uploadFilePath,fullFile.getName());
29                             item.write(saveFile);
30                             uploadFileName=fullFile.getName();
31                             out.print("上传成功后的文件名是:"+uploadFileName);
32                         }
33                     }
34                 }
35             }catch(Exception e){
36                 e.printStackTrace();
37             }
38         }
39      %> 

二、上传指定格式的文件

 

<%
	request.setCharacterEncoding("utf-8");
    	String uploadFileName="";	//上传的文件名
    	String fieldName="";			//表单字段元素的name属性值
    	//请求信息中的内容是否是multipart类型
    	boolean isMultipart=ServletFileUpload.isMultipartContent(request);
    	//上传文件的存储路径(服务器文件系统上的绝对文件路径)
    	String uploadFilePath=request.getSession().getServletContext().getRealPath("upload/");
    	if(isMultipart){
    		FileItemFactory factory=new DiskFileItemFactory();
    		ServletFileUpload upload=new ServletFileUpload(factory);
    		try{
    			//解析form表单中所有文件
    			List<FileItem> items=upload.parseRequest(request);
    			Iterator<FileItem> iter=items.iterator();
    			while(iter.hasNext()){		//依次处理每个文件
    				FileItem item=(FileItem)iter.next();
    				if(item.isFormField()){		//普通表单字段
    					fieldName=item.getFieldName();		//表单字段的name属性值
    					if("user".equals(fieldName)){
    						//输出表单字段的值
    						out.print(item.getString("utf-8")+"上传了文件<br/>");
    					}
    				}else{	//文件表单字段
    					String fileName=item.getName();
    					//通过Arrays类的asList()方法创建固定长度的集合
    					List<String> fileType=Arrays.asList("gif","bmp","jpg");
    					String ext=fileName.substring(fileName.lastIndexOf(".")+1);
    					if(!fileType.contains(ext)){//判断文件类型是否在允许的范围类
    						out.print("上传失败,文件类型只能是gif、bmp、jpg");
    					}else{
    						if(fileName!=null&&!"".equals(fileName)){
	    						File fullFile=new File(item.getName());
	    						File saveFile=new File(uploadFilePath,fullFile.getName());
	    						item.write(saveFile);
	    						uploadFileName=fullFile.getName();
	    						out.print("上传成功后的文件名是:"+uploadFileName);
	    					}
	    				}
    				}
    			}
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    	}
   %> 

 

 三、上传指定格式的文件并限制文件大小

 

  <%
		request.setCharacterEncoding("utf-8");
    	String uploadFileName="";	//上传的文件名
    	String fieldName="";			//表单字段元素的name属性值
    	//请求信息中的内容是否是multipart类型
    	boolean isMultipart=ServletFileUpload.isMultipartContent(request);
    	//上传文件的存储路径(服务器文件系统上的绝对文件路径)
    	String uploadFilePath=request.getSession().getServletContext().getRealPath("upload/");
    	//创建临时文件目录路径
    	File tempPatchFile=new File("d:/temp/buffer/");
    	if(!tempPatchFile.exists()){
    		tempPatchFile.mkdirs();//创建指定的目录,包括所有必须但不存在的父目录
    	}
    	if(isMultipart){
    		DiskFileItemFactory factory=new DiskFileItemFactory();
    		//设置缓冲区大小4kb 
    		factory.setSizeThreshold(4096);
    		//设置上传文件用到临时文件存放路径
    		factory.setRepository(tempPatchFile);
    		ServletFileUpload upload=new ServletFileUpload(factory);
    		//设置一个完整请求的最大允许大小
    		upload.setSizeMax(1024*1200);
    		try{
    			//解析form表单中所有文件
    			List<FileItem> items=upload.parseRequest(request);
    			Iterator<FileItem> iter=items.iterator();
    			while(iter.hasNext()){		//依次处理每个文件
    				FileItem item=(FileItem)iter.next();
    				if(item.isFormField()){		//普通表单字段
    					fieldName=item.getFieldName();		//表单字段的name属性值
    					if("user".equals(fieldName)){
    						//输出表单字段的值
    						out.print(item.getString("utf-8")+"上传了文件<br/>");
    					}
    				}else{	//文件表单字段
    					String fileName=item.getName();
    					//通过Arrays类的asList()方法创建固定长度的集合
    					List<String> fileType=Arrays.asList("gif","bmp","jpg");
    					String ext=fileName.substring(fileName.lastIndexOf(".")+1);
    					if(!fileType.contains(ext)){//判断文件类型是否在允许的范围类
    						out.print("上传失败,文件类型只能是gif、bmp、jpg");
    					}else{
    						if(fileName!=null&&!"".equals(fileName)){
	    						File fullFile=new File(item.getName());
	    						File saveFile=new File(uploadFilePath,fullFile.getName());
	    						item.write(saveFile);
	    						uploadFileName=fullFile.getName();
	    						out.print("上传成功后的文件名是:"+uploadFileName+",文件大小是:"+item.getSize()+"bytes!");
	    					}
	    				}
    				}
    			}
    		}catch(FileUploadBase.SizeLimitExceededException ex){
    			out.print("上传失败,文件太大,全部文件的最大限制是:"+upload.getSizeMax()+"bytes!");
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    	}
   %>

jsp上传文件

标签:efi   dede   else   pos   信息   长度   ssi   blog   rtc   

原文地址:https://www.cnblogs.com/ggl5250703/p/8412834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!