生成从HTML页面到Spring MVC控制器的下载请求可以通过以下步骤实现:
<a href="/download">下载文件</a>
@RequestMapping
注解指定请求路径,例如:@Controller
public class DownloadController {
@RequestMapping("/download")
public ResponseEntity<Resource> downloadFile() {
// 下载文件的逻辑
}
}
ResponseEntity
来构建响应对象,并设置文件的内容类型、长度和名称,例如:public ResponseEntity<Resource> downloadFile() {
// 获取要下载的文件
Resource file = ...;
// 设置文件的内容类型
String contentType = "application/octet-stream";
// 返回响应对象
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(contentType))
.contentLength(file.contentLength())
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getFilename() + "\"")
.body(file);
}
Resource
接口来表示要下载的文件,可以是本地文件或者从数据库、云存储等获取的文件,例如:public ResponseEntity<Resource> downloadFile() {
// 获取要下载的文件
Resource file = new FileSystemResource("/path/to/file.txt");
// 返回响应对象
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(contentType))
.contentLength(file.contentLength())
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getFilename() + "\"")
.body(file);
}
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp().prefix("/WEB-INF/views/").suffix(".jsp");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
这样,当用户点击HTML页面中的下载按钮或链接时,就会触发Spring MVC控制器中的下载方法,返回一个包含要下载文件的响应对象,浏览器会自动下载该文件。
领取专属 10元无门槛券
手把手带您无忧上云