我的代码
@RestController
@RequestMapping("/rest/v1/files")
public class FileController {
@Autowired
FileService fileService;
@GetMapping(value="/{id}")
ResponseEntity<InputStreamResource> downloadFile(@PathVariable Integer id, HttpServletRequest request) throws IOException {
FileInfo file = fileService.getFile(id);
String dispositionPrefix = "attachment; filename=";
String encodedFilename = file.getOrgName();
Path filePath = Paths.get(file.getPath(), file.getName());
InputStreamResource resource = new InputStreamResource(Files.newInputStream(filePath, StandardOpenOption.READ));
return ResponseEntity.ok()
.contentLength(Files.size(filePath))
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.header(HttpHeaders.CONTENT_DISPOSITION, dispositionPrefix + encodedFilename)
.body(resource);
}
}
然后我得到org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
我用MediaType.APPLICATION_OCTET_STREAM
设置了内容类型。但是我不知道出了什么问题...
我试图下载JPG
之类的*************.jpg
个文件,例如1542293055613.jpg
答案 0 :(得分:0)
此发布的代码正确无误。我没有错误地运行它。
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
当请求处理程序无法生成客户端可接受的响应时,抛出此异常。
请检查客户的请求。
答案 1 :(得分:0)
我的春季项目没有适当的HttpMessageConverter
。我刚刚添加了ResourceHttpMessageConverter
,就可以了。
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new ResourceHttpMessageConverter(true));
}
}