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

  • 相关阅读:
    寻找完全数(C++)
    莱布尼兹三角形(C++)
    简单的素数问题(C++)
    ubuntu17.04下安装LNMP
    ubuntu下连接mysql出现Access denied for user 'rose'@'localhost' (using password: NO)的解决方法
    快速理解面向对象的PHP编程--基础篇
    百度电面总结
    操作系统基础知识
    快速理解C语言指针
    新手学习MongoDB的基本命令
  • 原文地址:https://www.cnblogs.com/xifenglou/p/5606913.html
Copyright © 2011-2022 走看看