存储在Heroku上运行的基于Java的REST服务的映像

存储在Heroku上运行的基于Java的REST服务的映像,java,postgresql,rest,heroku,amazon-web-services,Java,Postgresql,Rest,Heroku,Amazon Web Services,我目前正在开发我的第一个基于Java的RESTful服务,应该在上面运行。此服务管理一些具有关联图像的对象。由于Heroku无法存储这些图像(除了将它们存储在数据库中),因此我考虑使用类似于CDN的外部(CDN)。我的第一次尝试如下: 在客户端对图像()进行编码 将封装的编码图像发送到服务器端 在服务器端解码图像 处理图像(缩放、创建缩略图等) 使用for Java将图像存储在Amazon的CloudFront中 将指向具有关联对象的图像的链接存储在中 现在我的问题是,这是否是一条路,或者是否有

我目前正在开发我的第一个基于Java的RESTful服务,应该在上面运行。此服务管理一些具有关联图像的对象。由于Heroku无法存储这些图像(除了将它们存储在数据库中),因此我考虑使用类似于CDN的外部(CDN)。我的第一次尝试如下:

  • 在客户端对图像()进行编码
  • 将封装的编码图像发送到服务器端
  • 在服务器端解码图像
  • 处理图像(缩放、创建缩略图等)
  • 使用for Java将图像存储在Amazon的CloudFront中
  • 将指向具有关联对象的图像的链接存储在中
  • 现在我的问题是,这是否是一条路,或者是否有更好的方法,是否是一个好的起点。如果这有助于给出答案,那么这些图像将用于桌面、移动设备以及web应用程序中

    使用AWS SDK for Java将图像存储在Amazon的CloudFront中

    呃,CloudFront不存储东西,而是缓存东西。如果你想把它存储起来,你需要把图像放在S3上,并每月付费

    在客户端对图像(base64)进行编码

    呃,为什么??只需执行PUT或多部分mime POST,并以字节形式发送文件

    将Json封装的编码图像发送到服务器端

    同样,没有理由对其进行编码,您可以在同一帖子中轻松地发送元数据+数据,而无需编码

    在postgreSQL数据库中存储具有关联对象的图像的like


    在数据库中存储图像是一种反模式。它使数据库更难备份,查询速度更慢,等等。通常,您希望将图像放在S3中,并将路径存储在数据库中。

    根据图像大小,您也可以将图像直接存储在PostgreSQL的
    bytea
    字段中或使用
    pg\u largeobject
    。正如我在帖子中提到的,我知道这是可能的,但Dynos并没有那么便宜,浪费他们的计算能力来交付内容不是一个好主意。此外,我必须处理许多图像,在大多数情况下,将图像存储在数据库中也不是一个好主意。因此,我正在寻找一个利用CDN的解决方案。非常明智和合理。感谢您的回答。所以,据我所知,这是一条路要走,我只需要忘记这个en-和解码的东西<代码>在数据库中存储图像是一种反模式。是的,我知道,这是我文章中的一个输入错误。它应该是
    link
    而不是像第六点中的
    那样。我在上面对克雷格·林格的评论中也说过同样的话-根据您的提示,我能够编写一个简单的上传程序,它接受给定的InputStream(无base64编码),缩放给定的图像并将其放入AmazonS3存储桶中。谢谢