springboot前后端不分离,如何保证上传的文件,直接可以下载
时间: 2024-03-13 13:43:07 浏览: 66
springboot+vue实现超大文件分片极速上传与下载完整前后端源码
要实现上传的文件直接可以下载,可以采用如下步骤:
1. 将上传的文件保存到服务器的指定目录中;
2. 读取该目录下的文件信息并返回给前端;
3. 前端可以通过文件的 URL 地址直接进行下载。
下面是一个简单的示例代码:
```java
@RestController
public class FileController {
@Value("${file.upload.path}")
private String uploadPath;
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) {
try {
String fileName = file.getOriginalFilename();
File dest = new File(uploadPath + fileName);
file.transferTo(dest);
return "上传成功";
} catch (Exception e) {
e.printStackTrace();
return "上传失败";
}
}
@GetMapping("/download")
public void download(HttpServletResponse response, @RequestParam("fileName") String fileName) {
try {
File file = new File(uploadPath + fileName);
InputStream inputStream = new FileInputStream(file);
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
OutputStream outputStream = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
其中,`uploadPath` 是上传文件的保存路径,可以通过配置文件进行设置。
通过以上代码,当上传文件成功后,直接访问 `/download` 接口即可下载该文件。注意,下载接口中的 `fileName` 参数应该与上传时的文件名相同。
阅读全文