gpt4 book ai didi

java - Null ModelAndView 返回到 DispatcherServlet,名称为 'dispatcherServlet' : assuming HandlerAdapter completed request handling

转载 作者:行者123 更新时间:2023-11-30 07:31:38 25 4
gpt4 key购买 nike

大家好,因为这是我的 Controller 类,当我在 postman 中运行此应用程序时,它的显示状态为 200 ok。但是文件未读取,我如何将带有扩展名的文件名作为方法中的字符串参数传递?我缺少您的帮助,这是非常值得赞赏和知识渊博的

@RequestMapping(value = "/file/{name}", method = RequestMethod.GET)
public ResponseEntity<InputStreamResource> download(@PathVariable String name) {
try {
File inputFile = fileSystemHandler.read(name);
HttpHeaders headers = new HttpHeaders();
// headers.add(HttpHeaders.CONTENT_TYPE, "application/octet-stream");
headers.add(HttpHeaders.CONTENT_LENGTH, "" + inputFile.length());
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename= " + name);
InputStreamResource isr = new InputStreamResource(new FileInputStream(inputFile));
return new ResponseEntity<InputStreamResource>(isr, headers, HttpStatus.OK);
} catch (Exception ex) {
// return data;
}
return null;
}

这是我的文件系统处理程序类

public File read(String name) {
File inputFile = null;
try {
inputFile = new File(env.getProperty("file.Path") + name);
return inputFile;
} catch (Exception ex) {
Logger.getLogger(FileSystemHandler.class.getName()).log(Level.SEVERE, null, ex);
}
return inputFile;
}

最佳答案

问题读起来不清楚,但我假设您正在请求类似“readme.txt”的内容,但在请求中您在检查文件名时会得到简单的“readme”。这是因为 spring 尝试使用路径末尾的 .txt 来确定响应的内容类型。您需要禁用该行为或在请求末尾使用尾部斜杠 ( http://localhost:8080/file/readme.txt/ )。

要在 spring-boot 中禁用,你可以这样做:

@Configuration
public static class MvcConfig extends EnableWebMvcConfiguration {

@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
super.configurePathMatch(configurer);
configurer.setUseRegisteredSuffixPatternMatch(false);
configurer.setUseSuffixPatternMatch(false);
}
}

关于java - Null ModelAndView 返回到 DispatcherServlet,名称为 'dispatcherServlet' : assuming HandlerAdapter completed request handling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36029712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com