zoukankan      html  css  js  c++  java
  • commons-fileupload实现单次上传文件(word文档)

    首先是这个文件需要用到的maven包

    <dependency>
    	    <groupId>commons-fileupload</groupId>
    	    <artifactId>commons-fileupload</artifactId>
    	    <version>1.2.2</version>
    	</dependency>
    	<dependency>
    	    <groupId>commons-io</groupId>
    	    <artifactId>commons-io</artifactId>
    	    <version>1.3.2</version>
    	</dependency>
    	<dependency>
    	    <groupId>portlet-api</groupId>
    	    <artifactId>portlet-api</artifactId>
    	    <version>1.0</version>
    	</dependency>
    	<dependency>
    	    <groupId>javax.servlet</groupId>
    	    <artifactId>servlet-api</artifactId>
    	    <version>2.4</version>
    	</dependency>
    	<dependency>
    	    <groupId>junit</groupId>
    	    <artifactId>junit</artifactId>
    	    <version>3.8.2</version>
    	</dependency>
    

    然后是servlet实现代码

    public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");  
              response.setCharacterEncoding("utf-8"); 
              //1、创建一个DiskFileItemFactory工厂  
              DiskFileItemFactory factory=new DiskFileItemFactory();
              //创建解析器
              ServletFileUpload upload=new ServletFileUpload(factory);
              upload.setHeaderEncoding("utf-8");
              factory.setSizeThreshold(1024*500);//内存极限值
              File linshi = new File("E:\linshi");//暂时使用硬盘来解决内存不足的存储问题
              factory.setRepository(linshi);//设置过大的读取路径
              upload.setSizeMax(1024*1024*5);//设置最大值
              try {
                List<FileItem> items = upload.parseRequest(request);
                  for (FileItem item : items) {  
                        // 若是一个一般的表单域, 打印信息  
                        if (item.isFormField()) {  
                            String name = item.getFieldName();  
                            String value = item.getString("utf-8");  
                            System.out.println(name + ": " + value);
                        }  
                        // 若是文件域则把文件保存到 e:\files 目录下.  
                        else {  
                            String fileName = item.getName();  
          
                            InputStream in = item.getInputStream(); 
                           
                            
                             
                            fileName=(new Date()).getTime()+"";
                            String fileUrl = "E:/files/" + fileName+".docx";//文件最终上传的位置  
                           
                            OutputStream out = new FileOutputStream(fileUrl);
                            
                            int len=0;
                            byte buffer[] = new byte[1024];
                            //字节流保护文档的完整.不可以使用高级流
                            while((len=in.read(buffer))>0){
                                out.write(buffer, 0, len);
                            }
                            
                          
                            out.close();  
                            in.close();  
                           
                        }  
                    }  
            } catch (FileUploadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            
        }
  • 相关阅读:
    BZOJ3832: [Poi2014]Rally(拓扑排序 堆)
    UVAlive6807 Túnel de Rata (最小生成树)
    UVAlive6800The Mountain of Gold?(负环)
    cf623A. Graph and String(二分图 构造)
    BZOJ4144: [AMPPZ2014]Petrol(最短路 最小生成树)
    cf605D. Board Game(BFS 树状数组 set)
    为什么要去创业?
    后缀数组练习题若干
    Android开发 之 我的jar包引用方法
    IBM-ETP 实训项目前一天
  • 原文地址:https://www.cnblogs.com/blackdeng/p/6951142.html
Copyright © 2011-2022 走看看