Spring MVC - 将图像复制到WEB-INF / assets文件夹中

时间:2018-06-12 10:57:05

标签: image spring-mvc copy

我正在尝试将图像复制到 WEB-INF 文件夹中的assets文件夹中。下面的代码成功地将图像复制到项目之外但不能复制到WEB-INF文件夹中。

public static void copyFile(String source, String destination) throws IOException {
        try {
            File sourceFile = new File(source);
            File destinationFile = new File(destination);

            FileInputStream fileInputStream = new FileInputStream(sourceFile);
            FileOutputStream fileOutputStream = new FileOutputStream(destinationFile);

            int bufferSize;
            byte[] bufffer = new byte[512];
            while ((bufferSize = fileInputStream.read(bufffer)) > 0) {
                fileOutputStream.write(bufffer, 0, bufferSize);
            }
            fileInputStream.close();
            fileOutputStream.close();
        } catch (IOException e) {
            throw new IOException(e.getMessage());
        }
    }

我从Http请求获得了一个图片路径。

CopyFile.copyFile(imageUrl, "http://localhost:8080/M.S.-Handloom-Fabrics/static/"+imageName+".png");

我已经在 dispatcher-servlet.xml

中映射了资源
<mvc:resources mapping="/static/**" location="/WEB-INF/assets/"/>

这是错误

  

信息:http:\ localhost:8080 \ M.S.-Handloom-Fabrics \ static \ TueJun1216_27_54NPT20180.png(文件名,目录名或卷标语法不正确)

1 个答案:

答案 0 :(得分:0)

http://localhost:8080/M.S.-Handloom-Fabrics/static/"+imageName+".png"

是一个URL,而不是文件路径,因此作为File构造函数的参数毫无意义。

如果您将应用服务器配置为在部署时爆炸您的网络应用,那么您可以使用ServletContext.getRealPath,但正如this SO post详细说明您很可能不希望这样做,因为您保存的文件将丢失重新部署。

将它们保存在网络应用程序之外是可行的方法。