我正在使用Sping Boot 构建一个Web应用程序,我需要用户上传图像。我被困在这个问题的后端。我在控制器中编写了以下代码。应用程序运行良好,当我通过Postman上传文件时,它返回状态为200的图像URL(ok)但是文件没有被添加到文件夹。请在这里提出错误。请尽可能详细地保留它。
这里是我的代码上传图像,我已经写在控制器
@PostMapping("/image/upload")
public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file) {
String message = "Image is successfully uploaded";
try {
String uploadPath = staticDir+"testfile_"+System.currentTimeMillis()+"_"+file.getOriginalFilename();
file.transferTo(new File(uploadPath));
message = "Image URL : " + uploadPath;
return ResponseEntity.status(HttpStatus.OK).body(message);
} catch (Exception e) {
LOGGER.error("Exception occurred: {}",e);
message = "Could not upload the file: " + file.getOriginalFilename() + "!";
return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(message);
}
}
我用@Value注解了staticDir,以便从www.example.com获取它的值application.properties
@Value("${static.dir.path}")
private String staticDir;
application.properties www.example.com
然后,我有一个应用程序通过端口8080访问图像的配置。
@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {
@Value("${static.dir.path}")
private String staticDir;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/vms/**")
.addResourceLocations("C:/Users/rjuna/IdeaProjects/visitor-management-system/images/");
}
}
“/vms/**”是一个模式。应用程序将在模式下方给出的位置找到任何具有此模式的URL文件。现在我正在使用此URL进行搜索
localhost:8080/vms/testfile_1681807188450_My_Photo.jpg
但我得到404-找不到,无论是在浏览器和 Postman . API返回的图像URL,这是我的计算机中的文件位置.虽然我想通过应用程序即访问图像.通过localhost:8080,这是行不通的.请建议对此的解决方案.
1条答案
按热度按时间bksxznpy1#
由于缺少路径分隔符/或\,文件写入的位置不正确。
要么
或者