我写了一个代码将图像(学生的个人资料图片)上传到在Linux环境中运行的服务器中。代码如下所示
@RequestMapping(value = "/updatePhoto",method = RequestMethod.POST)
public String handleFormUpload(@RequestParam("id") String id,
@RequestParam("file") MultipartFile file,
HttpServletRequest request,
Model model) throws IOException {
if(!file.isEmpty())
{
try
{
String relativePath="/resources";
String absolutePath=request.getServletContext().getRealPath(relativePath);
System.out.print(absolutePath);
byte[] bytes=file.getBytes();
File dir=new File(absolutePath);
if(!dir.exists())
{
dir.mkdir();
}
File uploadFile=new File(dir.getAbsolutePath()+File.separator+id+".jpg");
BufferedOutputStream outputStream=new BufferedOutputStream(new FileOutputStream(uploadFile));
outputStream.write(bytes);
outputStream.close();
model.addAttribute("uploadMessage","image uploaded for id"+id);
}
catch (Exception e)
{
System.out.print(e);
}
}
return "successFileUpload";
}
我已经存储在“ / resources”文件夹中。但是问题是,每当我生成整个应用程序的war文件并部署到服务器中时,它都会刷新“ / resources”文件夹并删除旧的上传图像。方式或路径,我可以上传图片。
答案 0 :(得分:1)
我将图像存储在Tomcat的主页位置中,因为它们将位于项目文件夹(war)之外和tomcat的内部。
String rootPath = System.getProperty("catalina.home");
File dir = new File(rootPath + File.separator + "images");
以上代码行将在tomcat基本目录中创建一个名为“ images”的文件夹。
这是存储图像的最佳方法之一。
答案 1 :(得分:1)
我的方法是:
/myImages
您现在可以出发了。我读过某个地方,您不应该将内容保存在/resources
文件夹中,因为它会使您的应用程序独立于您使用的容器:使用tomcat,您可以使用catalina.home
,但是如果您转移到另一个容器,该怎么办< / p>
答案 2 :(得分:0)
这是简单的方法
System.out.println(System.getProperty("user.dir"));