一:任务

1.任务

  文件的上传

  文件的下载

二:文件的上传

1.新建一个对象

  FileInfo.java

 package com.cao.dto;

 public class FileInfo {
private String path;
public FileInfo(String path) {
this.path=path;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
} }

2.新建控制器

 package com.cao.web.controller;

 import java.io.File;
import java.io.IOException;
import java.util.Date; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import com.cao.dto.FileInfo; @RestController
@RequestMapping("/file")
public class FileController {
@PostMapping
public FileInfo uploadFile(MultipartFile fileKey) throws Exception {
System.out.println("fileName: "+fileKey.getName());
System.out.println("OriginalFilename: "+fileKey.getOriginalFilename());
System.out.println("size: "+fileKey.getSize());
//将要存储在controller的目录下
String folder="E:\\workspace-sts-3.9.5.RELEASE\\it-security-demo\\src\\main\\java\\com\\cao\\web\\controller";
File localFile=new File(folder,new Date().getTime()+".txt");
fileKey.transferTo(localFile);
//写入流中,这个主要用于写入其他的地方,例如服务器等,这里不写了
//fileKey.getInputStream()
return new FileInfo(localFile.getAbsolutePath());
}
}

3.测试类

 /**
* 测试文件的上传
* @throws Exception
*/
@Test
public void whenUploadSuccess() throws Exception {
String result=mockMvc.perform(MockMvcRequestBuilders.fileUpload("/file")
.file(new MockMultipartFile("fileKey","test.txt","multipart/form-data","hello".getBytes("UTF-8"))))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn().getResponse().getContentAsString();
System.out.println("result="+result);
}

4.控制台

  

  存储到的现象

  

三:文件的下载

1.添加io操作的包

           <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>

2.文件下载的程序

 package com.cao.web.controller;

 import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import com.cao.dto.FileInfo; @RestController
@RequestMapping("/file")
public class FileController { String folder="E:\\workspace-sts-3.9.5.RELEASE\\it-security-demo\\src\\main\\java\\com\\cao\\web\\controller"; /**
* 文件的上传控制器
* @param fileKey
* @return
* @throws Exception
*/
@PostMapping
public FileInfo uploadFile(MultipartFile fileKey) throws Exception {
System.out.println("fileName: "+fileKey.getName());
System.out.println("OriginalFilename: "+fileKey.getOriginalFilename());
System.out.println("size: "+fileKey.getSize());
//将要存储在controller的目录下
File localFile=new File(folder,new Date().getTime()+".txt");
fileKey.transferTo(localFile);
//写入流中,这个主要用于写入其他的地方,例如服务器等,这里不写了
//fileKey.getInputStream()
return new FileInfo(localFile.getAbsolutePath());
} /**
* 文件的下载
*/
@GetMapping("/{id}")
public void downFile(@PathVariable String id, HttpServletRequest request,HttpServletResponse response) {
try(
InputStream inputStream=new FileInputStream(new File(folder,id+".txt"));
OutputStream outputStream=response.getOutputStream();
)
{
response.setContentType("application/x-download");
response.addHeader("Content-Disposition", "attachment;filename=test.txt");
IOUtils.copy(inputStream, outputStream);
outputStream.flush();
} catch (Exception e) {
// TODO: handle exception
}
} }

3.在浏览器上访问

  

009 spring boot中文件的上传与下载的更多相关文章

  1. iOS开发中文件的上传和下载功能的基本实现-备用

    感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...

  2. JavaWeb中文件的上传和下载

    JavaWeb中文件的上传和下载 转自: JavaWeb学习总结(五十)——文件上传和下载 - 孤傲苍狼 - 博客园https://www.cnblogs.com/xdp-gacl/p/4200090 ...

  3. Spring MVC 实现文件的上传和下载

    前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:“用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流”.我回复他说:“使用Spring MVC框架可以做到这一点,因为Spri ...

  4. Java中文件的上传与下载

    文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar  commons-io.jar apache的commons-fileupload实现文件上传,下载 [u ...

  5. Spring MVC 实现文件的上传和下载 (八)

    完整的项目案例: springmvc.zip 目录 SpringMVC 中,文件的上传,是通过 MultipartResolver 实现的. 所以,如果要实现文件的上传,只要在 spring-mvc. ...

  6. Struts中文件的上传与下载

    前面学到的用组件去上传 前台: 1.post表单提交 2.表单类型 multipart/form-data 3.intput type=file 后台: Apach提供的FileUpload组件 核心 ...

  7. docker容器中文件的上传与下载

    原文地址:传送门 1.上传文件 docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH [OPTIONS]:保持源目标中的链接,例: docker cp ...

  8. JSP中文件的上传于下载演示样例

    一.文件上传的原理     1.文件上传的前提:         a.form表单的method必须是post         b.form表单的enctype必须是multipart/form-da ...

  9. Struts2中文件的上传与下载

    文件上传 1.jsp页面 <s:form action="fileAction" namespace="/file" method="POST& ...

随机推荐

  1. Cocos2d-x中文显示乱码

    Cocos2d-x 引擎编码格式默认为utf8,而VS开发环境默认为gbk2312,所以把代码文件保存为utf8格式就能解决. VS->文件->高级保存选项->Unicode(UTF ...

  2. python-面向对象之继承

    一.继承介绍 继承是一种新建类的方式,新建的类称之为子类或者派生类,被继承的类称为父类/基类/超类 python中继承的特点: 1.子类可以遗传/重用父类的属性 2.子类可以有多个父类 3.Pytho ...

  3. c# 图片插入Excel

    引用COM:Microsoft Office 11.0 Object Library 引用类:    using System;    using System.Windows.Forms;    u ...

  4. 查看MySQL版本的命令及常用命令

    Windows / Linux 系统 前提是已经正确安装了 MySQL,打开 Windows 系统中的命令行工具(Win + R --> 输入 cmd 并按下回车键)--> 输入命令: m ...

  5. Confluence 6 反向跟踪

    当反向跟踪(Trackback )被启用后,在任何你链接到可用启用自动发现功能的外部页面中,Confluence 将会自动发送一个方向跟踪 ping,这个 ping 能通知链接的页面有了内容改变. C ...

  6. Confluence 6 后台中的默认空间模板设置

    Confluence 6 后台中的默认空间模板设置界面的布局. https://www.cwiki.us/display/CONFLUENCEWIKI/Customizing+Default+Spac ...

  7. django----Form详细信息

    Form类: 创建Form类时,主要涉及到 [字段] 和 [插件],字段用于对用户请求数据的验证,插件用于自动生成HTML; Django内置字段 Field required=True, 是否允许为 ...

  8. Canvas锯齿问题

    canvas的宽高必须通过HTML属性指定,不能通过CSS指定,否则会有锯齿 这个是通过CSS定义宽高,绘制的图形 #myCanvas{ background: black; height: 800p ...

  9. Python推荐系统库--Surprise实战

    一.使用movieLens数据集 from surprise import KNNBasic, SVD from surprise import Dataset from surprise impor ...

  10. 用C语言实现窗口抖动

    #include "stdafx.h" #include <stdio.h> #include<Windows.h> int main() { ; //休眠 ...