如何使用Spring MVC将图像上传到webapp / resources / images目录?


问题内容

在将产品详细信息添加到资源库之前,我有一个资源库类要存储来自MultipartFile的图像到webapp / resources / images目录中?

@Override
public void addProduct(Product product) {
    Resource resource = resourceLoader.getResource("file:webapp/resources/images");

     MultipartFile proudctImage = product.getProudctImage();

     try {
        proudctImage.transferTo(new File(resource.getFile()+proudctImage.getOriginalFilename()));
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    listOfProducts.add(product);
}

我的存储库类是ResourceLoaderAware。我正在获取fileNotFoundException,“
imagesDesert.jpg”是我要上传的图像

java.io.FileNotFoundException: webapp\resources\imagesDesert.jpg (The system cannot find the path specified)

问题答案:

最后,我可以解决此问题,我们不需要指定 file:
前缀,而且默认情况下,resourceLoader.getResource()它将在我们的Web应用程序的根目录中查找资源,因此无需指定webapp文件夹名称。所以最终以下代码对我有用

@Override
public void addProduct(Product product) {

    MultipartFile proudctImage = product.getProudctImage();

    if (!proudctImage.isEmpty()) {
        try {
            proudctImage.transferTo(resourceLoader.getResource("resources/images/"+product.getProductId()+".png").getFile());

        } catch (Exception e) {
            throw new RuntimeException("Product Image saving failed", e);
        }
    }

    listOfProducts.add(product);
}