【问题标题】:SpringBoot absolute path clarificationSpring Boot 绝对路径说明
【发布时间】:2021-10-23 11:23:53
【问题描述】:

我是 SpringBoot 网络开发的新手。 我需要将图像保存到当前项目的目录中。我将路径指定为“String uploaddir =”./src/main/imageuploads/“+ savedadvert.getId();”但是图像没有保存到eclipse项目中的“./src/main/imageuploads/”目录中。

@RequestMapping(value="/upload", method = RequestMethod.POST)
public String FileUpload(@RequestParam("file1Url") MultipartFile multipartfile, Model model) throws IOException {
    
    model.addAttribute("advertsim",new advertsummary());
    
    advertsummary advert = new advertsummary();
      
    String file1Urlname= StringUtils.cleanPath(multipartfile.getOriginalFilename());
    advert.setFile1Url(file1Urlname);
                                               
    advertsummary savedadvert = AdvertService.addadvert(advert);
    
    String uploaddir = "./src/main/imageuploads/"+ savedadvert.getId(); 

    FileUploadUtil.saveFile(multipartfile, file1Urlname, uploaddir);    
    
    return "uploadview";
}

这是 ref 的 saveFile 方法。

public static void saveFile(MultipartFile multipartFile, String fileName, String uploadDir) throws IOException {
     Path uploadPath = Paths.get(uploadDir);
     
        if (!Files.exists(uploadPath)) {
            Files.createDirectories(uploadPath);
        }
          
        try (InputStream inputStream = multipartFile.getInputStream()) {
            Path filePath = uploadPath.resolve(fileName);
            System.out.println(filePath.toFile().getAbsolutePath());
            Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException ioe) {       
            throw new IOException("Could not save image file: " + fileName, ioe);
        }
    
}

我需要上传图片到这个目录,

当我得到绝对路径时,它显示如下“/Users/chathura/eclipse/jee-2021-03/Eclipse.app/Contents/MacOS/./src/main/imageuploads/24/new file.jpg ”。 无法访问此目录,但我可以使用终端访问该目录。

请告诉我这里的错误是什么?

注意:我使用的是 macos

提前致谢

【问题讨论】:

  • 不要使用图像,但实际上将您的代码添加到问题中。谢谢!
  • 对不起,我已经添加了代码。

标签: java spring-boot maven java.nio.file


【解决方案1】:
  1. 你能试试 'src/main/resources/imagesuploads'(不带 .)
  2. 提醒一下:打包应用程序时此目录将消失(生产模式)
  3. 此目录应可从外部文件(例如 application.properties)进行配置

【讨论】:

  • 嗨 Ali,它正在显示,HTTP 状态 500 – 内部服务器错误类型:异常报告消息:/src:只读文件系统描述:服务器遇到了阻止它完成请求的意外情况.异常:java.nio.file.FileSystemException:/src:只读文件系统
  • 我猜这个错误与没有写入根目录有关。如何将文件写入 Root 目录?
【解决方案2】:

感谢 Ali,您的回复为我们提供了解决方案。因此,我的项目位于 MacOS 分区上,未经许可我无法写入文件。我只是将位置更改为另一个分区并且它起作用了。

    @RequestMapping(value="/upload", method = RequestMethod.POST)
public String FileUpload(@RequestParam("file1Url") MultipartFile multipartfile, Model model) throws IOException {
    
    model.addAttribute("advertsim",new advertsummary());
    
    advertsummary advert = new advertsummary();
      
    String file1Urlname= StringUtils.cleanPath(multipartfile.getOriginalFilename());
    advert.setFile1Url(file1Urlname);
                                               
    advertsummary savedadvert = AdvertService.addadvert(advert);
    
    String uploaddir = "/Volumes/My Data/Fileupload"+ savedadvert.getId();  

    FileUploadUtil.saveFile(multipartfile, file1Urlname, uploaddir);    
    
    return "uploadview";
}

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-18
    • 2016-03-13
    • 1970-01-01
    • 2015-01-12
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多