java 图像上传在Sping Boot 中不起作用

ohtdti5x  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(132)

我正在使用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,这是行不通的.请建议对此的解决方案.

bksxznpy

bksxznpy1#

由于缺少路径分隔符/或\,文件写入的位置不正确。
要么

String uploadPath = staticDir+"/testfile_"+System.currentTimeMillis()+"_"+file.getOriginalFilename();

或者

static.dir.path=C:\Users\rjuna\IdeaProjects\visitor-management-system\images\

相关问题