有人可以指导我为我的网站存储图像的最佳方式.我正在创建我的第一个MVC网站,我想我会从一个 Image网站开始,对这些图像进行评论 我使用javascript在图库中显示我的图像,这需要图像的网
我使用javascript在图库中显示我的图像,这需要图像的网址.我希望用户上传图片,但我不确定这是将它们存储在服务器上的最佳方式.我将它们保存在服务器上的文件夹中作为纯图像吗?
或者最好使用SQL来处理数据,是字节[]或者我听说过Filestream,文件流可以给我我需要的东西吗?
或者,还有更好的方法?
谢谢
我想将所有图像存储在图像文件夹中,然后将图像的路径存储在数据库中,例如,如果我们正在发帖子并且每个帖子都有图像,我们可以将图像上传到/ webroot / images /并保存数据库中的路径/webroot/images/someimage.jpg.如果网站上有很多图片,最好进一步组织,在一个文件夹中有数千个文件是不好的,特别是如果你要尝试连接ftp的东西,你可以再添加一个带有帖子ID的文件夹(在我提到的例子中)所以它会变成/webroot/images/[id]/image1.jpg.
如果前缀总是相同/ webroot / images你可以在数据库中忽略它以保存一些磁盘空间,前提是应用程序知道images文件夹的位置,也可以忽略第二个例子中的id,视图代码将是像这样
<img src='<?= IMAGES_FOLDER."/".$post->getId()."/".$post->getImageName() ?>' />
当然,在帖子中添加一个getImage()函数会很好,请查看示例:
public function getImage() { return IMAGES_FOLDER."/".$this->getId()."/".$this->getImageName(); }
img标签现在更干净了
<img src='<?= $post->getImage() ?>' />
PS:在数据库中存储图像是非常低效的,因为数据库通常是应用程序的瓶颈,存储图像会增加数据库大小,并且每当访问网站上的任何图像时都会有更多的点击,更不用说打开运行php(或您正在使用的任何语言)脚本以提供该图像所需的任何图像,这将增加服务器上的RAM使用率.
此外,由于您提到用户要上传图像,请尝试避免存储与上传图像相同的图像,使事情看起来很傻,尤其是长名称和使用空格和名称的名称,我通常通过执行md5来处理图像名称,或生成随机字符串,以及md5它,保持字符串长度不变,看起来更干净,不要忘记仔细检查图像是否存在,以避免覆盖它.
当然,我建议的所有名称仅用于示例,您可以自由使用适合您应用程序的名称.