• 使用 Commens-FileUpload 组件实现文件上传


    1,首先我们在  jsp 页面文件上写入简单的  form 表单元素

        

     <form action="servlet/Upload" method="post" enctype="multipart/form-data">
        	用户名:<input name="uname" type="text"/>
        	图片:<input name="file" type="file"/>
        		 <input type="submit" value="提交"/>
        </form>
    

      form表单中 method 属性的 值  不可以  设置成 get  因为get上传的文件的内存太小。

      还有 enctype属性的值设置成  multipart/form-data  大体意思是上传的类型是最大值

      还有一个是 提交表单不用设置name 属性  。设置 name 属性 没有 意义,会大大的减缓 浏览器运行速度

    2,配置 jar 包

      commons-fileupload-1.3.2.jar

      commons-io-2.5.jar

    3,写 servle  t语句

      

    package cn.happy.servlet;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileItemFactory;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    
    public class Upload extends HttpServlet {
    
    	
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doPost(request,response);
    		
    	}
    
    	
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		 //解决中文乱码问题 因为提交方式是 post  所以使用   request.setCharacterEncoding()方法
    
    
              request.setCharacterEncoding("utf-8");
              //借助第三方apache 组织的jar包
    		 //上传
    		 //创建接收文件的工厂类
    		
    		FileItemFactory factory=new DiskFileItemFactory();
    		//创建解析对象
    		ServletFileUpload upload=new ServletFileUpload(factory);
    		try {
    			//根据请求解析出 FileItem  类型的 集合   每一个 item 就是一个表单对象
    			List<FileItem> list = upload.parseRequest(request);
    			for (FileItem item : list) {
    				//判定 是否是普通的表单 如果是 返回 true    如果不是则 false
    				if(item.isFormField()){ //这里表示普通的表单
    					//找到表单名字   判定是否于源文件名相同
    					if(item.getFieldName().equals("uname")){
    						String uname = item.getString("utf-8");
    						request.setAttribute("uname", uname);
    					}
    				}else{//是文本表单
    					
    					//文件域字段 获取想要上传文件的名字
    					String filename = item.getName();
    					//servlet里面能获取application
    					//获取你要上传的最终路径的绝对路径
    					/*因为java里头没有application 所以我们使用
    					 * getServletContext()方法点出getRealPath("里头写的是上传文件到哪儿的路径")写入绝对路径
    					 */
    					String path = getServletContext().getRealPath("/WEB-INF/upload");
    					//使用文件接收最终的文件路径写入我们的内容
    					File file=new File(path,filename);
    					item.write(file);
    				}
    			}			
    										
    		} catch (FileUploadException e) {
    			e.printStackTrace();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    

      

  • 相关阅读:
    event的属性
    dom三个事件
    setInterval和setTimeout定时器
    eclipse编码格式设置
    eclipse Subversion Native Library Not Available
    NET Framework V4.0.30319
    eclipse配置tomcat
    eclipse Multiple annotations found at this line
    eclipse安装svn插件
    eclipse安装maven
  • 原文地址:https://www.cnblogs.com/bb1008/p/7308558.html
Copyright © 2020-2023  润新知