Spring Boot |将图像上载到资源中的相对路径

时间:2017-05-09 11:43:02

标签: spring file-upload spring-boot image-uploading relative-path

我得到“系统无法找到指定的路径”。当我尝试将图像上传到资源内的项目文件夹时。 这是我的项目结构:

|项目   | SRC     |主       |资源          | META-INF.resources             |图像

Learn Django

我已将路径定义为

String path = "\\resources\\images\\" + imageName; File file = new File(path );
    try {
        InputStream is = event.getFile().getInputstream();
        OutputStream out = new FileOutputStream(path );
        byte buf[] = new byte[1024];
        int len;
        while ((len = is.read(buf)) > 0)
            out.write(buf, 0, len);
        is.close();
        out.close();
    } catch (Exception e) {
        System.out.println(e);
    }

META-INF.resources目录下图像文件夹的确切路径是什么?

2 个答案:

答案 0 :(得分:0)

以下应该可以正常工作:

//App.java 
    String path = "\\META-INF.resources\\images\\" + imageName;
    InputStream is = App.class.getClassLoader().getResourceAsStream(

                    path);

在坚果shell中,使用“getClassLoader()。getResourceAsStream()”而不是FileInputStream或FileOutputStream。

答案 1 :(得分:0)

以下为我工作。 在application.properties中,我将路径字符串定义为:

image.path = src/main/resources/META-INF/resources/images/uploads/

这是我在类文件中的uploadImage函数。

 @Autowired
private Environment environment;

public String uploadImg(FileUploadEvent event, String imagePrefix) {

    String path = environment.getProperty("image.path");

    SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmss");
    String name = fmt.format(new Date())
            + event.getFile().getFileName().substring(
            event.getFile().getFileName().lastIndexOf('.'));
    name = String.format("%s%s" ,imagePrefix ,name );
    String finalPath = String.format("%s%s" ,path ,name);
    System.out.println("image is going to save @ " +finalPath);

    File file = new File(finalPath).getAbsoluteFile();

    try {
        InputStream is = event.getFile().getInputstream();
        OutputStream out = new FileOutputStream(file);
        byte buf[] = new byte[1024];
        int len;
        while ((len = is.read(buf)) > 0)
            out.write(buf, 0, len);
        is.close();
        out.close();
    } catch (Exception e) {
        System.out.println(e);
    }
    return name;
}

我不确定它是否适用于生产。基本上我得到项目的绝对路径,然后追加我相对提取的路径。如果我错了,请纠正我。