gpt4 book ai didi

java - Spring Boot 不接受文件扩展名

转载 作者:行者123 更新时间:2023-12-02 12:44:44 25 4
gpt4 key购买 nike

我正在使用Spring boot v1.5.3.RELEASE,现在,如果我不包含扩展文件,我可以正常下载文件。当我尝试使用典型的文件扩展名(jpg、jpeg、mp3、mp4 等)下载文件时,Spring 会丢弃该请求。示例请求可以是:localhost:8888/public/file/4.jpg

我的Application.java是:

public class Application extends RepositoryRestMvcConfiguration {

public static void main(String[] args) {
// System.getProperties().put( "server.port", 8888 );
// System.getProperties().put( "spring.thymeleaf.mode", "LEGACYHTML5" );
SpringApplication.run(Application.class, args);
}

@Bean
public RepositoryRestConfigurer repositoryRestConfigurer() {

return new RepositoryRestConfigurerAdapter() {
@Override
public void configureRepositoryRestConfiguration(
RepositoryRestConfiguration config) {
config.exposeIdsFor(Noticia.class, file.class, Label.class, Reaction.class);
}
};

}



}

我的Controller.java代码是:

@RequestMapping(value = "public/file/{filename}", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public FileSystemResource getPublicFileWithSuffix(@PathVariable("filename") String filename) {


System.out.println("filename with suffix sepparated! " + filename);
String id = filename.split(Pattern.quote("."))[0];

file file = fileRepository.findById(Long.parseLong(id));
File f = new File("/srv/Ressaca/locals/" + file.getId() + file.getExtension());
return new FileSystemResource(f);
}

谷歌搜索后我找到了部分解决方案。使用此解决方案,如果我输入类似 localhost:8888/public/file/4.hello 或 localhost:8888/public/file/4.jpj 的内容,它可以工作,但是如果扩展名是一些真实的扩展名,例如(jpg、jpeg、mp3、mp4 等),Spring boot 会继续丢弃请求。

Controller 谷歌搜索后:

@RequestMapping(value = "public/file/{filename:.+}", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public FileSystemResource getPublicFile(@PathVariable("filename") String filename) {


System.out.println("filename " + filename);
String id = filename.split(Pattern.quote("."))[0];

file file = fileRepository.findById(Long.parseLong(id));
File f = new File("/srv/Ressaca/locals/" + file.getId() + file.getExtension());
return new FileSystemResource(f);

}

如何启用“真实文件扩展名”?

最佳答案

尝试使用 * 而不是 +,但任何方法都可以。我在任何版本的 Spring Boot 中都没有发现任何从查询参数发送扩展的限制。

@RequestMapping("/public/file/{fileName:.*}")

关于java - Spring Boot 不接受文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44811639/

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