@RestController
public class FileDownloadController {
@GetMapping("/download/{filename}")
public void downloadFile(@PathVariable String filename, HttpServletResponse response) {
// 设置响应头,指定文件名
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
// 从指定目录加载文件
File file = new File("/path/to/your/files/directory/" + filename);
try (InputStream is = new FileInputStream(file);
OutputStream os = response.getOutputStream()) {
// 将文件内容传输到响应输出流
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = is.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
// 删除文件
file.delete();
} catch (IOException e) {
// 处理异常
}
}
}
/download/{filename}端点会下载文件,然后在下载完成后立即删除文件。这样,用户下载文件后,文件将被删除。
替换 /path/to/your/files/directory/ 为实际存储文件的目录路径,并根据你的应用程序的需要进行适当的配置和安全性检查。