zoukankan      html  css  js  c++  java
  • SpringMVC文件上传

    运用SpringMVC的文件上传,我们只需要一些配置就可以了,很方便!

    只需要一下几步就行:

    1.新建xml文件,例如:a.xml 配置如下:

    <?xml version="1.0" encoding="UTF-8"?>  
    <beans xmlns="http://www.springframework.org/schema/beans"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"  
    default-lazy-init="true">  
    <!--Controller类的路径-->
        <bean id="pickMaintainController" class="com.ly.controller.PickMaintainController"></bean>
    </beans>
    

     2.在spring-application.xml中添加配置如下:

    <!-- 支持文件上传 -->
    	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
    在web.xml中添加配置如下:
    	<servlet>
    		<servlet-name>springmvc</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>classpath:resources/codeifAction.xml</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    </servlet>
    

     3.Controller类如下:红色标注为关键

    @Controller
    public class PickMaintainController {
    @RequestMapping("batchUpload")
      public String batchUpload(Model model, @RequestParam(value = "file", required = false) MultipartFile file,  HttpServletRequest request) {
        //上传文件操作
        
      }
    }
    

     4.jsp页面:注意name值file和 MultipartFile file一样的

    <form id="" method="post" action="" enctype="multipart/form-data">
      <input type="file" id="file" name="file" />
    </form>
    

    想了想还把上传文件操作贴出来吧:不然你会苦恼的。。。

    @RequestMapping("batchUpload")
      public String batchUpload(Model model, @RequestParam(value = "file", required = false) MultipartFile file,  HttpServletRequest request) {
        //上传文件操作
        String path = request.getSession().getServletContext().getRealPath("upload");
    		String fileName = file.getOriginalFilename();
    		System.out.println(path);
    		System.out.println(fileName);
    		File targetFile = new File(path, fileName);
    		if(!targetFile.exists()) {
    			targetFile.mkdirs();
    		}
    		//如果文件存在,就删除
    		deleteFiles(path+"\"+fileName, fileName);
    		//保存
    		try{
    			file.transferTo(targetFile);
    		}catch(Exception e) {
    			e.printStackTrace();
    			System.out.println("文件保存失败!");
    		}
    		String filePath = request.getSession().getServletContext().getRealPath("upload")+"/"+fileName;
    		
      }
        //删除指定路径下的文件
    	 public static void deleteFiles(String path, String fileName){
    	       File file = new File(path);
    	       //1級文件刪除
    	       if(!file.isDirectory() && file.getName().equals(fileName)){
    	           file.delete();
    	       }else if(file.isDirectory()){
    	           //2級文件列表
    	           String []filelist = file.list();
    	           //获取新的二級路徑
    	           for(int j=0;j<filelist.length;j++){
    	               File filessFile= new File(path+"\"+filelist[j]);
    	               if(!filessFile.isDirectory() && file.getName().equals(fileName)){
    	                   filessFile.delete();
    	               }else if(filessFile.isDirectory()){
    	                   //递归調用
    	                   deleteFiles(path+"\"+filelist[j], fileName);
    	               }
    	           }
    	           file.delete();
    	       }
    	    }
        
    }
    

     有问题请留言。。。。

  • 相关阅读:
    .net core 3.1 使用autofac注入
    基于.NetCore3.1系列 —— 日志记录之初识Serilog
    antd vue select可选可清空
    ant-design-vue纯前端分页
    mysql查询逗号分隔的id,连表查询出name,同样用逗号分隔
    oracle字符串里面有通过逗号分隔的各个id,直接通过字符串获取id对应的name的字符串
    人脉、交往、会说话和做人、专业素质
    Ubuntu 一些执行命令
    CentOS 7 express nodejs
    IdWorker
  • 原文地址:https://www.cnblogs.com/julinhuitianxia/p/7230113.html
Copyright © 2011-2022 走看看