zoukankan      html  css  js  c++  java
  • springmvc文件上传下载

    springmvc文件上传下载

    在网上搜索的代码 参考整理了一份

    需要使用的jar、

    commons-fileupload.jar与commons-io-1.4.jar二个文件 1、表单属性为: enctype="multipart/form-data"

    2、springmvc配置

    <?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"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-3.2.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
      
      
    <!-- 扫描包 -->
    <context:component-scan base-package="com.ai.customer" />
    
     <!-- 启动注解 -->
     <mvc:annotation-driven />
    
    
    <!-- 文件上传 -->
     <bean id="multipartResolver"  
       class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
       <!-- 设置上传文件的最大尺寸为10MB -->  
       <property name="maxUploadSize">  
           <value>10000000</value>  
       </property>  
      </bean>  
    
    
    <!--  静态文件访问 -->
     <mvc:default-servlet-handler/> 
     <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> 
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
     
     	<property name="prefix" value="/"/>
     	<property name="suffix" value=".jsp"/>	
     </bean> 
     
    </beans>

    2、上传下载功能代码

    package com.ai.customer.controller;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.fileupload.FileUpload;
    import org.apache.commons.io.FileUtils;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    public class FileUploadController {
    
      /*
       * SpringMVC中的文件上传
       * @第一步:由于SpringMVC使用的是commons-fileupload实现,故将其组件引入项目中
       * @这里用到的是commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar
       * @第二步:spring-mvx中配置MultipartResolver处理器。可在此加入对上传文件的属性限制
       *  <bean id="multipartResolver"  
       *  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
       *	 <!-- 设置上传文件的最大尺寸为10MB -->  
       *		<property name="maxUploadSize">  
       *			<value>10000000</value>  
       *		 </property>  
       * </bean> 
       * 第三步:在Controller的方法中添加MultipartFile参数。该参数用于接收表单中file组件的内容
       *第四步:编写前台表单。注意enctype="multipart/form-data"以及<input type="file" name="****"/>
       *  如果是单个文件 直接使用MultipartFile 即可
       */ 
    
      @RequestMapping("/upload.do")
      public ModelAndView upload(String name,
          //上传多个文件
          @RequestParam("file") MultipartFile[] file,
          HttpServletRequest request) throws IllegalStateException,
          IOException {
        
        //获取文件 存储位置
        String realPath = request.getSession().getServletContext()
            .getRealPath("/uploadFile");
        
        File pathFile = new File(realPath);
        
        if (!pathFile.exists()) {
          //文件夹不存 创建文件
          pathFile.mkdirs();
        }
        for (MultipartFile f : file) {
          
          System.out.println("文件类型:"+f.getContentType());
          System.out.println("文件名称:"+f.getOriginalFilename());
          System.out.println("文件大小:"+f.getSize());
          System.out.println(".................................................");
          //将文件copy上传到服务器
          f.transferTo(new File(realPath + "/" + f.getOriginalFilename()));
           //FileUtils.copy
        }
        //获取modelandview对象
        ModelAndView view = new ModelAndView();
        view.setViewName("redirect:index.jsp");
        return view;
      }
      
      
      @RequestMapping(value = "download.do")  
      public ModelAndView download(HttpServletRequest request,  
          HttpServletResponse response) throws Exception {  
      
    //		String storeName = "Spring3.xAPI_zh.chm";  
        String storeName="房地.txt";
        String contentType = "application/octet-stream";  
        FileUploadController.download(request, response, storeName, contentType);  
        return null;  
      }  
      
      
      //文件下载 主要方法
      public static void download(HttpServletRequest request,  
          HttpServletResponse response, String storeName, String contentType
           ) throws Exception {  
        
        request.setCharacterEncoding("UTF-8");  
        BufferedInputStream bis = null;  
        BufferedOutputStream bos = null;  
      
        //获取项目根目录
        String ctxPath = request.getSession().getServletContext()  
            .getRealPath("");  
        
        //获取下载文件露肩
        String downLoadPath = ctxPath+"/uploadFile/"+ storeName;  
      
        //获取文件的长度
        long fileLength = new File(downLoadPath).length();  
    
        //设置文件输出类型
        response.setContentType("application/octet-stream");  
        response.setHeader("Content-disposition", "attachment; filename="  
            + new String(storeName.getBytes("utf-8"), "ISO8859-1")); 
        //设置输出长度
        response.setHeader("Content-Length", String.valueOf(fileLength));  
        //获取输入流
        bis = new BufferedInputStream(new FileInputStream(downLoadPath));  
        //输出流
        bos = new BufferedOutputStream(response.getOutputStream());  
        byte[] buff = new byte[2048];  
        int bytesRead;  
        while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {  
          bos.write(buff, 0, bytesRead);  
        }  
        //关闭流
        bis.close();  
        bos.close();  
      }  
       
    }

    3、上传页面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    
    
    </head>
    <body>
    
    
      <form action="upload.do" method="post" enctype="multipart/form-data">
      
        <input type="text" name="name" />
        <br>
        <input type="file" name="file">
        <br>
        <input type="file" name="file" />
        
        <input type="submit" value="提交">
      </form>
    
    
    </body>
    </html>

    4、下载直接访问控制器如:http:\localhost:8080/springmvc/download.do

  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/antis/p/5464565.html
Copyright © 2011-2022 走看看