• 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();
            } 
            
        }
  • 相关阅读:
    130行C语言实现个用户态线程库(2)
    130行C语言实现个用户态线程库(1)
    用C语言模仿Python函数
    ES 2.4 bigdesk 安装失败解决方案.
    使用SqlBulkCopy, 插入整个DataTable中的所有数据到指定数据库中
    表A的数据减去表B ,最终得到表C
    关于把A表中的数据复制到B表中(整理)
    需求池整理
    app主流推广渠道
    流程图梳理
  • 原文地址:https://www.cnblogs.com/blackdeng/p/6951142.html
Copyright © 2020-2023  润新知