【问题标题】:Website Photo Gallery网站图片库
【发布时间】:2011-06-25 00:16:16
【问题描述】:

在使用照片库时,是否有“标准”方式在网络上存储照片? 将照片存储在 mysql 数据库中是不好的做法吗?我应该将照片存储在文件夹中,并将链接存储在数据库中吗?

谈到存储照片以在网站上使用时,什么是“良好做法”?

【问题讨论】:

    标签: mysql image storage gallery photo


    【解决方案1】:

    您可以使用不同的 BLOB 数据类型将照片存储在数据库中。如果照片数量过多或过大,数据库将开始受到性能影响,并且大小会急剧增加。本质上,如果您有 100 张 10Mb 的照片,那么数据库将增长 1,000Mb 或大约 1 Gb 的大小。备份将永远执行,如果包含图像的表因任何原因损坏,它会引起比您想处理的更头痛的问题。

    按照 imoda 的建议,我的建议是将它们存储在硬盘上,并在数据库中链接到它们,您将在其中保存所有元数据和指向文件位置的链接。最佳做法是将照片的文件名存储在数据库中,并重命名文件以使用主键的值作为文件名 例如,第 5 行与照片“x”相关联,其中 x 是文件名,将其存储在硬盘上驱动器并将照片重命名为文件名 5,然后当您访问它以进行下载等操作时,您将从数据库中的第 5 行中提取实际文件名并在下载之前将其重命名。如果您碰巧上传了两个或多个具有相同文件名的文件,这将防止意外覆盖该文件。

    【讨论】:

    • 好吧,它们不是用来下载的,但我明白了。我只是想知道,什么是“最佳做法”,因为我是照片库的新手 :) 感谢您的回答
    • 欢迎您。今天有一场关于是否应该使用 BLOBS 的激烈辩论,双方都有强烈的论据,但必须在结合上下文时确定。我没有提到的一件事是进行检查以确保文件不会从文件服务器中丢失,而不会从数据库中删除它们的记录。不应该发生,但它可以。可能会建议设置一个自动化任务来经常检查以确保文档仍然存在并在它们不存在时采取行动(显然是亲 BLOB 方面会使用的论点)。
    【解决方案2】:

    99% 的时间您都不想将照片存储在 MySQL 数据库中。如果操作不当,会非常耗费资源。将您的照片存储在您网站上的目录中,并将它们的路径存储在您的数据库中。

    【讨论】:

      【解决方案3】:

      我建议使用 Flickr 添加/删除和重新排列您的图片。使用 Flickr 的优点是您不必编写任何复杂的代码或托管图片。您可以使用 PHP 和 Flickr API 使用您的个人资料 ID 检索图片。 1. 使用 Flickr 创建应用程序 2. 下载phpFlickr,放到你服务器的根目录下 https://code.google.com/p/phpflickr/downloads/list 将此 PHP 代码添加到您的 gallery.php 文件

      这是带有分页功能的 PHP Gallery 的代码

      <div class="portfolio-grid">
      
      
      
          <?php
      
              $key = "92d657c8dc79a29108d846a5fd121a29";  //your API key
              $nsid = "108400461@N02";            //your NSID
      
              // get page number from the url - if there isn't one - we're on page 1
              $page = isset($_GET['page']) ? $_GET['page'] : 1;
      
              // inclue the core file
              require_once('phpFlickr/phpFlickr.php');
              // Fire up the main phpFlickr class 
              $f = new phpFlickr($key);
              $f->enableCache("fs", "cache");
      
              $photos = $f->people_getPublicPhotos($nsid, NULL, NULL, 20, $page);
              $pages = $photos[photos][pages]; // returns total number of pages
              $total = $photos[photos][total]; // returns how many photos there are in total
          ?>
      
      
          <!--END script Flick photos -->
          <div>
              <?php
                  echo '<div id="container">';
                  // loop through each photo
                   foreach ($photos['photos']['photo'] as $photo) {
      
                  // print out a link to the photo page, attaching the id of the photo
                       echo '<div class="item" style="float:left;">
                              <a class="swipebox-isotope" href="' . $f->buildPhotoURL($photo, 'Large') . '" title="A.S.A.C - The African Student&apos;s Association of Concordia"><img class="gallery-img" src="' . $f->buildPhotoURL($photo, 'medium') . '" alt="' . $photo['title'] . '" title="' . $photo['title'] . '"/></a>
                            </div>';
      
                  // end loop
                  }
                  echo '</div>';
              ?>
      
          </div>
      
            </div>
        <h2 id="nav">
          <?php
              // Some simple paging code to add Prev/Next to scroll through the thumbnails
              $back = $page - 1;
              $next = $page + 1;
              // if it's not the first page
              if($page > 1) {
              echo "<a href='?page=$back'>&laquo; <strong>Prev</strong></a>";
              }
      
      
      
      
              // if not last page
              if($page != $pages) {
              echo "<a style='float:right' href='?page=$next'><strong>Next</strong> &raquo;</a>";}
              // a quick bit of info about where we are in the gallery
              echo"<h3 style='text-align:center;'>Page $page of $pages <br/>$total photos</h3>";
      
          ?>
      </h2>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-14
        • 2013-01-26
        • 2011-04-28
        相关资源
        最近更新 更多