2016-01-21 62 views
4

我有一个网站,严重依赖我的sql数据库。我将产品信息存储在数据库中,并使用php进行检索和格式化。我想添加图像的等式,但不知道从哪里开始。它们的分辨率很高,所以我不认为将它们存储在实际的数据库中,但我不希望其他管理员花费数小时输入产品信息和图像。按照现状,管理员填写表格,验证信息是否正确,信息是否存储并显示在网站上。说到图像,我能想到的最好的方式是将图像名称和位置添加到产品信息中,并用php回调,但我不希望我的管理员花一整天来命名照片并手动输入名称。任何想法将不胜感激。在Web服务器上存储和检索图像的最佳方法是什么?

+0

的*最好*方法可人与人之间的不同,但是我建议存储数据库的精确图像位置。然后在src中回显该位置。 – Script47

+0

您是对的 - 尽可能将图像存储在数据库中,但不建议 - 特别是在高分辨率时。你可以很容易地编写一个脚本来扫描一个目录并将每个图像添加到数据库中。您还可以向管理员呈现一个可视化图像选择器,以便他们单击图像以将该图像/路径添加到表格中 – RamRaider

+0

您说你不希望他们花费一整天的时间来命名照片,但图像可能还有哪些可能得到一个名字? –

回答

0

我个人建议将图像存储在一个像Amazon S3这样的耐用和可扩展的存储设备中,这样可以消除很多负担,并且可以通过几乎任何比例的低成本CDN托管图像(小或大)。

您不必担心人工手动命名图像文件,因为它们可以通过代码随机分配唯一的名称。例如,即使您决定稍后更改某些信息,您也可以使用图像文件的md5总和来唯一标识图像,并仅将S3存储桶和对象ID存储在数据库中,以便从Web上轻松检索它们。此外,由于您声明将图像与数据库中的特定产品相关联,因此可能不需要在整个电路板上全局识别唯一的图像数据。你可以将它限制在相关的产品上,这可能会很好。

0

这样做的最好的办法是保存在网站上,说一斗,好CDN [像AWS S3],而在自己的服务器,并存储在数据库中的URL路径和名称。数据库有能力存储图像,但我不推荐给你。

的工作流程是建立在图像/ s时,可以上传到服务器的表单,然后在item_images插入表名,扩展名和URL

当检索图像,说在产品目录,从您的数据库只查询URL,并使用PHP显示给用户,把网址中每个IMG标签的SRC物业内。

<img alt="" src="<?php echo img_url[];?>" width="" class=""> 

考虑:

  1. 文件,如图片需要特定加密类型

    <FORM id="" method="post" action="" enctype="multipart/form-data"> 
    
  2. 文件被捕获不是由$ _POST或$ _GET,而是由$ _FILES阵列。

  3. 清除存储在服务器上之前上传的文件。避免.exe,.php和许多其他。

  4. 限制图像的尺寸和MIME类型使用GETIMAGESIZE()

  5. 使用MOVE_UPLOADED_FILE物理存储在您的服务器上的图像,因为在此之前,文件只是临时文件。

  6. 为了命名图像,最好使用语义网络方法,并将其与每个项目的ID结合起来。

    $image_name=$item_category.$item_id.$extension 
    
+0

将url保存到数据库中是我现在选择的方法。我想知道是否最好为每个链接设置多个列,或者如果有一种方法可以将它们全部存储在一个中并单独回显它们? –

相关问题