在Spring MVC中永久地上传图像到其他位置

15 浏览
0 Comments

在Spring MVC中永久地上传图像到其他位置

我想在Spring MVC中将图片上传到文件系统。我可以做到,但是当重新部署项目时,所有图片都会从目录中删除。现在我的问题是如何永久上传图片?我希望这在实际应用中能够实现。

admin 更改状态以发布 2023年5月24日
0
0 Comments

如前所述,为了持久化这些上传的图片,最好将它们保存在项目/.WAR文件之外。原因如你已经经历过的那样,每次重新部署应用程序时,之前部署时写入的任何内容(即上传的图片)都将丢失。

提供的解决方案是利用Amazon S3存储桶来保存这些图片,这是一个很好的解决方案,你肯定可以实现你想要的效果(即www.example.com/upload/ URL显示所有这些图片)。在springMVC中,你可以设置一个方法并分配@ RequestMapping注释,如下所示:

@Controller
@RequestMapping("/") //this can map to your www.example.com
public class MainController(){
    @RequestMapping("/upload") //this will then map to www.example.com/upload
    public String showUploads(){        
        return "redirect:http://pathToAmazonS3Bucket"
    }
}

在SpringMVC中,重定向允许你重定向到绝对的URL路径。 请参阅文档

但是如前所述,你仍然需要将图片托管到项目路径/WAR文件之外的某个地方。Amazon S3可以解决这个问题,但既然你要求另一个解决方案,那么这里有一个。

你可以将所有图片保存到电脑上的一个文件中,然后运行Python3Node作为HTTP服务器。这个解决方案需要你利用你的计算机和网络连接将你的图片托管到互联网上。这假定你能够让你的电脑不间断地运行,或者你有一台旧的计算机可以作为你的Web服务器。它也假定你的ISP允许你在你的网络上托管Web服务器。最后,你可以从在线服务中获得自己的唯一URL(一些免费的,一些需要小费用),这样人们就不必输入你的IP地址。

我在我的网络上使用No-IP.com提供的免费域名运行了类似的设置。

另外,你打算如何在Web上托管你的Spring Web应用程序?你会使用在线托管服务还是自己托管?如果自己托管,你会使用Apache Tomcat、Glassfish或其他容器/应用服务器?

0
0 Comments

你可能是将你的图片上传到了项目目录或war包内。每次部署/构建项目或war包时,图片都会被删除。

你需要将图片文件保存在项目或war包外。

对于实际应用,我建议你至少将上传的图片保存/提供在一个独立的服务器上。Amazon S3是一个非常好的选择。你只需要在数据库中存储相对于S3基本url的对象/文件名即可。他们也有Java API供你上传文件。

0