我正在春季启动,我在这条路径上创建了一个文件夹web
和images
floders:myApp/src/web/images
在做的时候
private String saveFile(MultipartFile file, String fileName) throws IOException {
byte[] bytes = file.getBytes();
String imagePath = new String(this.servletContext.getRealPath(this.imagesPath) + "/" + fileName);
Path path = Paths.get(imagePath);
Files.write(path, bytes);
return imagePath;
}
我收到了这个错误:
java.nio.file.NoSuchFileException:/private/var/folders/4g/wd_lgz8970sfh64zm38lwfhw0000gn/T/tomcat-docbase.8255351399752894174.8098/images/IMG_2018-01-06 15:18:48.486.jpg
我应该放置images
文件夹,以便成功上传文件。
感谢您的帮助
答案 0 :(得分:2)
您可以使用相当简单的方法将图像保存到同一/myapp/src/web/image/
目录中。
您的应用程序中的路径从myapp
目录开始,您只需要链接下一个路径/usr/web/images
并使用FileOutputStream
对象保存在那里。
以下示例。
private String saveFile(MultipartFile file,String filename) throws IOException{
final String imagePath = "src/web/images/"; //path
FileOutputStream output = new FileOutputStream(imagePath+filename);
output.write(file.getBytes());
return imagePath+filename;
}
第二次编辑
如果您想通过GET请求获取图像,您可以创建一个接受带有图像名称的请求参数的方法,并生成图像内容类型。类似的东西。 (此示例使用不同类型的图像。)
@RequestMapping(value = "/show/",produces = MediaType.IMAGE_PNG_VALUE)
public @ResponseBody byte[] showImage(@RequestParam("image") String image) throws IOException{
final String imagePath = "src/web/images/";
FileInputStream input = new FileInputStream(imagePath+image);
return IOUtils.toByteArray(input);
}
我使用apache公共依赖来获取字节数组
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
答案 1 :(得分:1)
我正在进行春季启动,并且我创建了一个文件夹web和 此路径上的图像文件夹:myApp / src / web / images
和这个例外:
java.nio.file.NoSuchFileException: /private/var/folders/4g/wd_lgz8970sfh64zm38lwfhw0000gn/T/tomcat-docbase.8255351399752894174.8098/images/IMG_2018-01-06 15:18:48.486.jpg
在运行时,在应用程序源代码中创建的images
文件夹将不会物理上位于承载应用程序的文件夹的images
文件夹中作为此路径:myApp/src/web/images
可能不是应用程序启动时由Spring Boot考虑。
在Spring Boot中,您可以访问位于某些特定文件夹中的静态资源,例如static
或public
。
但我不确定它会对您有所帮助,因为您不仅要访问已上传的文件,还要将内容放在文件夹中。
所以我建议您使用另一种方法:将图像放在与应用程序部署文件夹不同的特定文件夹中。
此外,通常,您希望在关闭/启动应用程序后文件可用。
因此,不使用应用程序的相对路径来托管图像:
myApp/src/web/images
使用绝对路径(前缀为/
),该路径独立于应用程序的运行时文件夹。