我正在尝试将图像复制到 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(文件名,目录名或卷标语法不正确)
答案 0 :(得分:0)
http://localhost:8080/M.S.-Handloom-Fabrics/static/"+imageName+".png"
是一个URL,而不是文件路径,因此作为File构造函数的参数毫无意义。
如果您将应用服务器配置为在部署时爆炸您的网络应用,那么您可以使用ServletContext.getRealPath
,但正如this SO post详细说明您很可能不希望这样做,因为您保存的文件将丢失重新部署。
将它们保存在网络应用程序之外是可行的方法。