我在为学校做一个电子商务应用,该应用程序有一个产品页面,显示每个产品的jpg图像。img文件夹在我的项目文件夹中(参见路径的代码),html中的链接只是./img/ + img name
。图像和产品是通过管理面板中的一个表单动态添加的,该面板将图像和其他数据作为multipart/form-data提供给我的servlet。这是将图像保存在上述文件夹中的代码
Part filePart = request.getPart("slika");
String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString();
// Ugly absolute path
File filePath = new File("C:\\Users\\dgudo\\OneDrive\\Desktop\\Faks\\Sesti semestar\\Internet Programerski alati\\Projekat\\CateringService\\web\\img");
File file = new File(filePath, fileName);
try ( InputStream fileContent = filePart.getInputStream()) {
Files.copy(fileContent, file.toPath(), StandardCopyOption.REPLACE_EXISTING);
} catch (IOException ie) {
request.setAttribute("msg", ie.getMessage());
}
这是可行的,但我使用的是本地机器唯一的绝对路径,而使用相对路径不行,它会告诉我找不到所需的资源,而使用System.getProperty("user.dir")
返回运行web应用的Tomcat服务器的路径,在那里它显然找不到任何东西。
所以我有几个问题:
1.没有互联网接入(环境,我将介绍应用程序在大学)什么是最好的方式保存和服务的jpg的,
1.1我应该让它保持原样,并希望教授看不到路径(项目中有2000多行代码,很容易错过)?
1.2我是否应该将/img文件夹移动到System.getProperty("user.dir")
指定的路径并在那里提供/保存服务?如果是,我如何将System.getProperty("user.dir")
的结果设置为某个全局变量,以便在JSP代码中使用它?
1.在实际的生产环境中,映像从何处保存和提供?
- 谢谢-谢谢
1条答案
按热度按时间liwlm1x91#
问题一:
1.1:是一个好的方法,它只应该修改
1.2:如果您希望使用主目录,则应使用System.getProperty(“user.home”)而不是System.getProperty(“user.dir”)
通常情况下,当应用程序启动时,您应该在user.home目录中创建一个临时文件夹myapplicationimp”,在其中管理图像。
例如:如果您使用springframework在bean创建后立即检查并创建文件夹,则可以使用@PostConstruct(仍然是一个示例)。
问题二:
在生产中保存数据时,我们使用与您相同的方法,或者使用第三方环境来保存远程存储库(如google驱动器)或数据库。
我希望这会有所帮助