文件上传 

   第一步,加入jar包:
    commons-fileupload-1.3.1.jar
    commons-io-2.4.jar

  第二步,在SpringMVC配置文件中配置CommonsMultipartResovler

  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
     //最大上传文件大小
<property name="maxUploadSize" value="1048576"></property>
</bean>

  第三步,前端表单   注意 【POST请求,file类型,enctype="multipart/form-data"

  <form action="${pageContext.request.contextPath }/testUpload" method="post" enctype="multipart/form-data">
File:<input type="file" name="file"><br>
desc:<input type="text" name="desc"><br>
<input type="submit" value="submit"><br>
</form><br>

  第四步,在controller层创建方法

   @RequestMapping(value="/testUpload",method=RequestMethod.POST)
   private String testUpload(HttpServletRequest request,@RequestParam(value="desc")String desc,@RequestParam(value="file") CommonsMultipartFile file) {    InputStream inputStream = null;
   OutputStream outputStream = null;
   ServletContext servletContext = request.getServletContext();
   //获取文件存放的真实路径
   String realPath = servletContext.getRealPath("/upload");
   //为了避免多次上传同一个文件导致命名重复,在文件名前加UUID前缀
   String prefix=UUID.randomUUID().toString();
   prefix=prefix.replace("-", "");
   String fileName=prefix+"_"+file.getOriginalFilename();    File file2=new File(realPath);
   //检查文件目录是否存在,若不存在就创建目录
   if(!file2.exists()){
   file2.mkdirs();
   }    try {
   inputStream=file.getInputStream();
   outputStream=new FileOutputStream(new File(realPath+"/"+fileName));
   //设置缓冲区
   byte[]buffer=new byte[1024];
   int len=0;
   //循环检测文件是否上传完成,未完成就向写入输出流
   while((len=inputStream.read(buffer)) != -1){
   outputStream.write(buffer, 0, len);
   outputStream.flush();
   }
   } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   } finally{
   //关闭输入输出流
   if(outputStream !=null){
   try {
   outputStream.close();
   inputStream.close();
   } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   }
   }
  } return "success";
}

  文件下载 

  用ResponseEntity<byte[]> 返回值完成文件下载;在jsp页面给出链接即可。

     jsp页面链接地址:

<a href="${pageContext.request.contextPath }/testResponseEntity">下载链接</a><br>

    

    在controller层创建方法

     @RequestMapping(value="/testResponseEntity")
ResponseEntity<byte[]>testResponseEntity(HttpServletRequest request)throws Exception{
ServletContext servletContext = request.getServletContext();
//获取要下载的文件的文件名
String fileName="喜剧之王.mp3";
//获取要下载的文件的真实路径
String realPath = servletContext.getRealPath("/WEB-INF/"+fileName);
//创建输入流
InputStream inputStream=new FileInputStream(new File(realPath)); byte[]body=new byte[inputStream.available()];
inputStream.read(body);
MultiValueMap<String, String>headers=new HttpHeaders(); //设置头信息和字符集
fileName = new String(fileName.getBytes("gbk"),"iso8859-1");
headers.set("Content-Disposition", "attachment;filename="+fileName); HttpStatus statusCode = HttpStatus.OK;
ResponseEntity<byte[]>responseEntity =new ResponseEntity<byte[]>(body, headers, statusCode); return responseEntity;
}

使用SpringMVC实现文件上传和下载的更多相关文章

  1. SpringMVC 实现文件上传与下载,并配置异常页面

    目录 上传文件的表单要求 Spring MVC实现上传文件 需要导入的jar包 配置MultipartResolver解析器 编写接收上传文件的控制器 Spring MVC实现文件下载 下载文件时的h ...

  2. 使用springMVC实现文件上传和下载之环境配置与上传

    最近的项目中用到了文件的上传和下载功能,任务分配给了其他的同时完成.如今项目结束告一段落,我觉着这个功能比较重要,因此特意把它提取出来自己进行了尝试. 一. 基础配置: maven导包及配置pom.x ...

  3. springMvc之文件上传与下载

    我们经常会使用的一个功能是文件下载,既然有文件下载就会有文件上传,下面我们来看一下文件上传是如何实现的 首先准备好一个页面 <style type="text/css"> ...

  4. springmvc之文件上传、下载

    1.接收到的是图片的流时 //上传头像 @RequestMapping(value = "/uploadHeadSculpture", method = RequestMethod ...

  5. SpringMVC的文件上传与下载

    1. 单文件上传 配置jsp页面 <%@ page contentType="text/html;charset=UTF-8" language="java&quo ...

  6. 【SpringMVC】文件上传与下载、拦截器、异常处理器

    文件下载 使用ResponseEntity实现下载文件的功能 index.html <!DOCTYPE html> <html lang="en" xmlns:t ...

  7. 使用springMVC实现文件上传和下载之文件下载

    接上一篇,文件下载需要获取下载文件的存储路径,这里只是手动填入,如果是在具体项目中,可以把文件名和上传后的存储路径保存在数据库中.然后增加一个文件列表的页面展示文件名和文件路径,然后点击下载的时候把相 ...

  8. 文件上传和下载(可批量上传)——Spring(二)

    针对SpringMVC的文件上传和下载.下载用之前“文件上传和下载——基础(一)”的依然可以,但是上传功能要修改,这是因为springMVC 都为我们封装好成自己的文件对象了,转换的过程就在我们所配置 ...

  9. 使用Spring MVC实现文件上传与下载

    前段时间做毕业设计的时候,想要完成一个上传文件的功能,后来,虽然在自己本地搭建了一个ftp服务器,然后使用公司的工具完成了一个文档管理系统:但是还是没有找到自己想要的文件上传与下载的方式. 今天看到一 ...

随机推荐

  1. GitHub 代码仓库提示:“We found a potential security vulnerability in one of your dependencies”

    github代码仓库提示:“We found a potential security vulnerability in one of your dependencies” 问题描述: Github上 ...

  2. 给本地web项目配置域名

    给本地的web项目配置一个域名 通常访问本地问项目时,使用localhost:port/projectname或者127.0.0.1:port/projectname来实现.我们可以通过配置tomca ...

  3. Spatial crowdsourcing

    空间众包(Spatial crowdsourcing)分类 空间众包是将一组空间任务众包给一组工作人员的过程,这要求工作人员实际位于该位置以执行相应的任务. 空间众包可以根据员工的动机分为两类:基于奖 ...

  4. Nginx 反向代理,IP、端口,项目路径变化的问题

    这两天在云上部署公司项目,涉及到nginx反向代理,在部署完成测试,发现在下载文件的时候,无法下载,提示链接被拒绝. 假设nginx代理地址: http://121.53.21.188:9012/we ...

  5. 学习python-20191108(2)REST接口相关

    一.客户登录验证 在使用接口前,需要对客户进行登录验证 enums.py文件代码: #定义枚举,客户端登录的方式有很多种形式:邮箱登录.手机登录.微信小程序登录.微信公众号登录 class Clien ...

  6. springboot学习笔记:7.IDEA下5步完成热部署配置

    开发工具IDEA 2017.02   JDK1.8 1.pom.xml中增加: <dependency> <groupId>org.springframework.boot&l ...

  7. Filezilla Server搭建FTP服务器

    一.下载Filezilla  Server 官网网址:https://filezilla-project.org 下载链接 :https://filezilla-project.org/downloa ...

  8. deeplearning.ai 卷积神经网络 Week 1 卷积神经网络

    1. 传统的边缘检测(比如Sobel)手工设计了3*3的filter(或者叫kernel)的9个权重,在深度学习中,这9个权重都是学习出来的参数,会比手工设计的filter更好,不但可以提取90度.0 ...

  9. cxf整合spring代码

    导入jar包cxf的jar包 创建实体类 package com.yhd.webservice.cxf.server.poto; public class Person { private Strin ...

  10. JS数字千分

    JS数字千分: 1.例子:1000--->1,000 2.实现如下: salesToFormat: function (num) { var num = (num || 0).toString( ...