当前位置: 首页 > news >正文

restful批量上传文件_RESTful文件上传与下载

文件上传

@Test

public void whenUploadSuccess() {

try {

String file = mockMvc.perform(MockMvcRequestBuilders.fileUpload("/file")

.file(new MockMultipartFile("file", "test.txt",

"multipart/form-data", "hello upload".getBytes("UTF-8"))))

.andExpect(MockMvcResultMatchers.status().isOk())

.andReturn().getResponse().getContentAsString();

log.info("file:{}",file);

} catch (Exception e) {

e.printStackTrace();

}

}

@PostMapping

public FileInfo upload(MultipartFile file) {

log.info(file.getName());

log.info(file.getOriginalFilename());

log.info(String.valueOf(file.getSize()));

File localFile = new File(folder, new Date().getTime() + ".txt");

try {

file.transferTo(localFile);

return new FileInfo(localFile.getAbsolutePath());

} catch (IOException e) {

e.printStackTrace();

return null;

}

}

文件下载

@GetMapping("/{id}")

public void download(@PathVariable String id, HttpServletRequest request, HttpServletResponse response) {

try (InputStream ips = new FileInputStream(new File(folder, id + ".txt"));

OutputStream ops = response.getOutputStream();) {

response.setContentType("application/x-download");

response.setHeader("Content-Disposition", "attachment;filename=test.txt");

IOUtils.copy(ips, ops);

ops.flush();

}catch (IOException e){

e.printStackTrace();

}

}

相关文章:

  • db2存储过程怎么调试_多租户模式下存储方案的考量
  • wpf 点击按钮弹出新对话框_wpf-打开文件对话框MVVM
  • DCL记忆上次输入值lisp_如何快速记忆Word中Ctr+字母、数字快捷键
  • go定时器 每天重复_腾讯 Go 性能优化实战
  • 注入js文件_你需要知道的依赖注入
  • 世界机器人冠军王宇航_带队两夺机器人世界杯冠军 金牌教练是如何养成的
  • tanh函数matlab_MATLAB常用数学函数
  • arma模型平稳性和可逆性的条件_时间序列 | 第四章 模型识别
  • matlab中cvx例子_机器学习中的相似性度量总结
  • 8266连接mqtt发送消息_未读消息(小红点),前端 与 RabbitMQ 实时消息推送实践,贼简单~...
  • 容器删除元素后迭代器失效_Java容器类源码分析之Iterator与ListIterator迭代器(基于JDK8)...
  • 3训练模型代码详解_一行代码不用写,就可以训练模型?
  • 计算各种形钢的重量用什么软件_钢结构防火防腐工程预算工程量计算方法
  • 神经网络训练的时间越来越长_基于对抗训练深度神经网络的时间序列分类
  • idea svn查看提交人_idea+svn看不到以前的版本记录,只能看往后的提交记录。先前的都用svnadmin表示了,为什么?...
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Django 博客开发教程 8 - 博客文章详情页
  • Java 内存分配及垃圾回收机制初探
  • Java反射-动态类加载和重新加载
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • yii2中session跨域名的问题
  • 记一次和乔布斯合作最难忘的经历
  • 强力优化Rancher k8s中国区的使用体验
  • 如何在GitHub上创建个人博客
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 推荐一个React的管理后台框架
  • 想写好前端,先练好内功
  • 一些css基础学习笔记
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 交换综合实验一
  • #14vue3生成表单并跳转到外部地址的方式
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (bean配置类的注解开发)学习Spring的第十三天
  • (差分)胡桃爱原石
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)丶RabbitMQ的六大核心
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (强烈推荐)移动端音视频从零到上手(上)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (轉貼) UML中文FAQ (OO) (UML)
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • [android] 看博客学习hashCode()和equals()
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [CareerCup] 14.5 Object Reflection 对象反射
  • [CISCN 2019华东南]Web11