【发布时间】:2019-05-09 05:58:40
【问题描述】:
我需要一些帮助来上传图片。
我有两个不同的应用程序
- Springboot 应用程序 - 在我的专用服务器上运行
- Angular-6 应用程序 - 在我的云服务器上运行
我需要将我的 spring-boot 应用程序中的图像上传到我的 Angular-6 assets 文件夹(assets 文件夹就像我们 spring-boot 应用程序的资源文件夹)
在 application.properties 中,我声明了上传位置,例如 profile_path=D:/documents/profile/(其工作文件带有我的文件系统路径)
if (!profileImage.isEmpty()) {
String fileName = profileImage.getOriginalFilename();
String fileExtenstion = FilenameUtils.getExtension(fileName);
InputStream is = profileImage.getInputStream();
Files.copy(is, Paths.get(profile_path + userDetailId + "." + fileExtenstion),
StandardCopyOption.REPLACE_EXISTING);
profileImagePath = profile_path + userDetailId + "." + fileExtenstion;
}
现在,问题出在云服务器路径上 我怎样才能上传到http://www.example.com/documents/profiles/ 或 //103.XXX.XX.XX/documents/profiles/
有没有人可以给我一个建议。
【问题讨论】:
-
好吧,您在应该是文件系统路径的地方使用网络路径。您在 URL 中看到的路径不是文件系统路径。它们只是一个分层路径,用于标识通过 HTTP 可用的资源。
-
所以,如果我想在服务器上上传图像,我需要使用哪个选项而不是 Files.copy(Paths.get())
-
答案就在问题中:使用服务器文件系统上存在的路径,如
D:/documents/profile/。 -
上传图片到example.com/documents/profile路径怎么样?
-
再次,您将 URL 与文件系统路径混淆了。您可以将图像存储在服务器文件系统上的任何位置(或外部服务、数据库或服务器可以存储和查找它们的任何位置)。然后,如果您想在 Web 应用程序中显示这些图像,您可以编写一个 spring mvc 控制器,映射到您选择的路径,该路径与您存储图像的位置无关,然后您从该控制器加载和提供图像.
标签: java spring-boot file-upload