通过ajax使用Springboot @RestController下载文件的步骤如下:
以下是一个示例代码:
@RestController
public class FileDownloadController {
@GetMapping("/download/{filename}")
public ResponseEntity<byte[]> downloadFile(@PathVariable String filename) {
try {
// 根据文件名获取文件的绝对路径
String filePath = "path/to/files/" + filename;
File file = new File(filePath);
// 设置Content-Disposition头部信息,指定文件名和下载方式
HttpHeaders headers = new HttpHeaders();
headers.setContentDispositionFormData("attachment", filename);
// 将文件内容以字节数组的形式返回
return ResponseEntity.ok()
.headers(headers)
.contentLength(file.length())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(Files.readAllBytes(file.toPath()));
} catch (IOException e) {
// 处理可能出现的异常
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
}
在前端页面中使用ajax发送请求:
$.ajax({
url: "/download/filename.txt",
method: "GET",
xhrFields: {
responseType: 'blob'
},
success: function(data) {
var blob = new Blob([data]);
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = "filename.txt";
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
});
这样就可以通过ajax使用Springboot @RestController下载文件了。请注意,示例代码中的文件路径和文件名需要根据实际情况进行修改。
领取专属 10元无门槛券
手把手带您无忧上云