我正在开发一个需要某种图形操作的Web应用程序。因此,用户可以上传图片,并且可以在后端进行处理并反馈给用户。
现在,上传的图片存储在应用服务器的本地磁盘上,路径存储在mysql中。因为图像处理是使用imagemagick完成的,所以必须进行本地文件访问。这种方式工作正常,但显然违反了分配系统的原则。如果处理的节点与上传的节点不同,则无法找到实际的图像文件。
我不认为我应该将图像存储为mysql中的blob。什么是一个干净的处理方式?
答案 0 :(得分:2)
云存储服务提供了一种解决方案。上传图片,例如某些Azure blob存储或Amazon Simple Storage Service。然后将图像处理请求发送到您的应用服务器,并将链接传递给云中的图像。如有必要,您的应用服务器也可以将图片从云存储下载到本地服务器存储。但是使用这种方法,您可能会运行多个服务实例(例如,多个服务器),并且每个实例都可能在云中找到图像并对数据进行操作。因此,您可以更好地扩展服务。
答案 1 :(得分:1)
ImageMagick完全能够访问非本地文件。
convert http://i.stack.imgur.com/6h1iJ.png -verbose info:
Image: http://i.stack.imgur.com/6h1iJ.png
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: PseudoClass
Geometry: 260x180+0+0
Units: Undefined
Type: Palette
Endianess: Undefined
Colorspace: sRGB
Depth: 8/1-bit
Channel depth:
red: 1-bit
green: 1-bit
blue: 1-bit
Channel statistics:
Pixels: 46800
Red:
min: 0 (0)
max: 255 (1)
或者,如果所有节点在同一网络上,则可以使用NFS服务器或NAS来存储文件,但所有节点都可以访问它们。