我试图在最终用户想要的时候覆盖并更新页面上的图像。他们只需上传一个新图像,它将用相同的文件名替换旧图像,然后网页中的src路径不需要更改。但是,它有点工作。该文件将被覆盖。但是当我刷新页面时,图像不会变为新的。奇怪的是,当我进入我的IDE(Eclipse)并双击新的图像文件时,那么我可以刷新网页并显示新替换的网页。这是我的第一个工作项目,我在其他地方找不到答案。我将提供代码;
<img th:src="@{/img/uploadedFile.jpg}" alt="image"></img>
@RequestMapping(method=RequestMethod.POST, value="image")
public String processImageForm(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
if (file.isEmpty()) {
redirectAttributes.addFlashAttribute("message", "Please select a file to upload");
return "redirect:image";
}
String extension = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
Path path = Paths.get(UPLOADED_FOLDER + fileName + extension);
try {
Files.deleteIfExists(path);
} catch (IOException | SecurityException e) {
System.err.println(e);
}
try {
// Get the file and save it somewhere
byte[] bytes = file.getBytes();
Files.write(path, bytes);
redirectAttributes.addFlashAttribute("message", "You successfully uploaded '" + file.getOriginalFilename() + "'");
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:image";
}
}
答案 0 :(得分:0)
我的猜测是你没有将该文件复制到正确的位置。
您知道在Web应用程序中创建war文件,然后将其部署在服务器上。因此,为了更改您需要在服务器上更改它的内容(即使从Eclipse运行,它也会从您创建服务器上下文)。我猜你的问题来自哪里 - 你把文件复制到了错误的地方。
当您从Eclipse运行时,文件已在本地文件系统上正确替换,但这并未更改已部署的war应用程序。当您在Eclipse中双击它时,它会注意到更改并自动重新部署它,基本上可以更改服务器上的文件。