首页 > 其他分享 >springboot实现文件的上传下载

springboot实现文件的上传下载

时间:2023-12-05 16:59:16浏览次数:33  
标签:文件 return springboot 上传下载 file logger 上传 下载

Spring Boot提供了简单易用的方式来处理文件上传和下载功能。下面是一个简单的示例:

创建一个文件上传的控制器
@RestController
public class FileUploadController {

private static final Logger logger = LoggerFactory.getLogger(FileUploadController.class);

@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
try {
// 保存文件
byte[] bytes = file.getBytes();
Path path = Paths.get(file.getOriginalFilename());
Files.write(path, bytes);

logger.info("文件上传成功:" + file.getOriginalFilename());
return "文件上传成功:" + file.getOriginalFilename();
} catch (IOException e) {
logger.error("文件上传失败:" + e.getMessage());
return "文件上传失败:" + e.getMessage();
}
}

}


创建文件下载的控制器
@RestController
public class FileDownloadController {

private static final Logger logger = LoggerFactory.getLogger(FileDownloadController.class);

@GetMapping("/download")
public ResponseEntity<Resource> downloadFile() {
try {
// 加载文件资源
Resource resource = new UrlResource("file:test.txt");
String filename = resource.getFilename();
String contentType = Files.probeContentType(Paths.get(filename));

return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(contentType))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + filename + "\"")
.body(resource);
} catch (IOException e) {
logger.error("文件下载失败:" + e.getMessage());
return ResponseEntity.notFound().build();
}
}

}


在应用程序中配置文件上传和下载的细节。
#文件上传配置
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
spring.servlet.multipart.file-size-threshold=0

@Configuration
public class AppConfig implements WebMvcConfigurer {

//文件上传配置
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
resolver.setMaxUploadSize(10485760);
resolver.setMaxInMemorySize(4096);
return resolver;
}

//文件下载配置
@Bean
public ByteArrayResource byteArrayResource() {
return new ByteArrayResource(new byte[0]);
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/file/**")
.addResourceLocations("file:/usr/local/data/");
}

}


在页面上传文件
<form th:action="@{/upload}" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">上传文件</button>
</form>

在页面下载文件
<a th:href="@{/download}" download="test.txt">下载文件</a>

这样就实现了文件上传和下载功能。当用户上传文件时,文件将被保存在应用程序的根目录中。当用户下载文件时,文件将从文件系统中加载并作为响应传输。

参考文章:http://blog.ncmem.com/wordpress/2023/12/05/springboot%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e4%b8%8b%e8%bd%bd-3/

欢迎入群一起讨论

 

 

标签:文件,return,springboot,上传下载,file,logger,上传,下载
From: https://www.cnblogs.com/songsu/p/17877615.html

相关文章

  • 记一次逆向分析解密还原Class文件
    前言前阵子我的一位朋友发来一份代码让我帮忙看看。具体就是所有的jsp文件内容和大小都一样,漏洞挖掘无从下手。经过分析发现所有的Class都使用了自定义的加密工具加密,经过逆向分析,顺利解密,因而有了此文。初步分析文件内容如下所示:其他文件亦如是:接着在tomcatwork目录找到......
  • python中级之文件操作
    引入 应用程序运行过程中产生的数据最先都是存放于内存中的,若想永久保存下来,必须要保存于硬盘中。应用程序若想操作硬件必须通过操作系统,而文件就是操作系统提供给应用程序来操作硬盘的虚拟概念,用户或应用程序对文件的操作,就是向操作系统发起调用,然后由操作系统完成对硬盘的具体......
  • 文件操作
    什么是文件文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口。用户/应用程序想要读写硬盘上保存的数据时,调用文件接口的过程:向操作系统发送相关请求;操作系统执行请求修改硬盘数据的请求总结:用户\应用程序----->操作系统----->硬盘用代码操作......
  • Linux环境中动态库文件(.so文件)的realname,soname和linkname--解释清楚
    realname:实际等同于库文件的filename,是在库文件生成时就被指定的,如:gcc-shared-o$(realname)dependenceflagsrealname的一般格式为lib$(name).so.$(major).$(minor).$(revision),$(name)是动态库的名字,$(major).$(minor).$(revision)分别表示主版本号,子版本号和修正版本......
  • 动态库文件(.so文件)的realname,soname和linkname 介绍和使用说明
    动态库文件(.so文件)的realname,soname和linkname介绍和使用说明介绍动态库文件(.so文件)的realname,soname和linkname介绍编译时设置soname和realname参考makefile设置sonamereadelf查看动态库sonamereadelf-dlibxxx.soreadelf功能介绍 ......
  • SpringBoot实现文件上传下载
    配置在application.yml中添加配置spring:servlet:multipart:enabled:true#表示是否开启文件上传支持,默认为truefile-size-threshold:0#表示文件写入磁盘的阀值,默认为0location:#表示上传文件的临时保存位置max-file-size:1MB#表示上......
  • 深入了解Linux文件权限
     在Linux系统中,文件权限是保障系统安全性和数据完整性的关键之一。本文将深入讨论Linux文件权限的各个方面,包括基本权限(UGO权限)、基本权限以外的ACL权限、高级权限、文件属性(chattr)以及客户端查询方法。基本权限(UGO权限)在Linux中,每个文件和目录都有一个拥有者(User)、一个用户组(Gro......
  • 文件的基本操作
    文件的基本操作1.操作文件打开的两种方式#1.文件的操作方式一:#讲文件以指定编码格式打开,讲文件句柄赋值给变量fpfp=open('01.txt','w',encoding='utf-8')#把hello写入文件fp.write("hello")#关闭文件fp.close()2.文件的操作方式二:#Python解释器内置了一个文......
  • 文件操作的基本流程
    文件操作的基本流程1.基本流程有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的流程#1.打开文件,由应用程序向操作系统发起系统调用open(...),操作系统打开该文件,对应一块硬盘空间,并返回一个文件对象赋值给一个变量ff=open('a.txt','r',encoding='utf-8'......
  • java通过springboot开发生成二维码
    1、添加依赖<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version><!--请使用最新版本--></dependency>2、编写代码@T......