Mysql 网站照片库
在使用照片库时,是否有一种“标准”的方式在网上存储照片? 在mysql数据库中存储照片是一种不好的做法吗?我应该将照片存储在文件夹中,并将链接存储在数据库中吗Mysql 网站照片库,mysql,image,storage,gallery,photo,Mysql,Image,Storage,Gallery,Photo,在使用照片库时,是否有一种“标准”的方式在网上存储照片? 在mysql数据库中存储照片是一种不好的做法吗?我应该将照片存储在文件夹中,并将链接存储在数据库中吗 当谈到在网站上存储照片时,“良好做法”是什么?99%的情况下,您不想在MySQL数据库中存储照片。如果做得不恰当,它会消耗大量的资源。将照片存储在网站的目录中,并将其路径存储在数据库中。99%的情况下,您不希望将照片存储在MySQL数据库中。如果做得不恰当,它会消耗大量的资源。将照片存储在网站的目录中,并将其路径存储在数据库中。您可以使用
当谈到在网站上存储照片时,“良好做法”是什么?99%的情况下,您不想在MySQL数据库中存储照片。如果做得不恰当,它会消耗大量的资源。将照片存储在网站的目录中,并将其路径存储在数据库中。99%的情况下,您不希望将照片存储在MySQL数据库中。如果做得不恰当,它会消耗大量的资源。将照片存储在网站的目录中,并将其路径存储在数据库中。您可以使用不同的BLOB数据类型将照片存储在数据库中。如果照片数量过多或过大,则数据库my的性能将开始受到影响,并且其大小将急剧增加。基本上,如果你有100张10Mb的照片,那就是1000MB,或者说是数据库将增长的Gb大小。执行备份将花费很长时间,如果包含映像的表由于任何原因而损坏,这将导致您无法处理的头痛问题
正如imoda建议的那样,我的建议是将它们存储在硬盘上,并在数据库中链接到它们,在数据库中保存所有元数据和指向文件位置的链接。最佳做法是将照片的文件名存储在数据库中,并重命名文件以使用主键的值作为文件名。例如,第5行与照片“x”关联,其中x是文件名,将其存储在硬盘上,并将照片重命名为文件名5,然后当您访问它进行下载等操作时,您将从数据库第5行中提取实际的文件名,并在下载之前对其进行重命名。如果您碰巧上载了两个或多个具有相同文件名的文件,这将防止意外覆盖该文件。您可以使用不同的BLOB数据类型将照片存储在数据库中。如果照片数量过多或过大,则数据库my的性能将开始受到影响,并且其大小将急剧增加。基本上,如果你有100张10Mb的照片,那就是1000MB,或者说是数据库将增长的Gb大小。执行备份将花费很长时间,如果包含映像的表由于任何原因而损坏,这将导致您无法处理的头痛问题
正如imoda建议的那样,我的建议是将它们存储在硬盘上,并在数据库中链接到它们,在数据库中保存所有元数据和指向文件位置的链接。最佳做法是将照片的文件名存储在数据库中,并重命名文件以使用主键的值作为文件名。例如,第5行与照片“x”关联,其中x是文件名,将其存储在硬盘上,并将照片重命名为文件名5,然后当您访问它进行下载等操作时,您将从数据库第5行中提取实际的文件名,并在下载之前对其进行重命名。如果您碰巧上载了两个或多个具有相同文件名的文件,这将防止意外覆盖该文件。我建议使用Flickr添加/删除并重新排列您的图片。使用Flickr的优点是,您不必编写任何复杂的代码或托管图片。您可以使用PHP和Flickr API使用您的配置文件ID检索图片。 1.使用Flickr创建应用程序 2.下载phpflicker并将其放在服务器的根目录下 将此PHP代码添加到gallery.PHP文件中 下面是带有分页的PHP库的代码
<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'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'>« <strong>Prev</strong></a>";
}
// if not last page
if($page != $pages) {
echo "<a style='float:right' href='?page=$next'><strong>Next</strong> »</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>
我建议使用Flickr添加/删除并重新排列图片。使用Flickr的优点是,您不必编写任何复杂的代码或托管图片。您可以使用PHP和Flickr API使用您的配置文件ID检索图片。
1.使用Flickr创建应用程序
2.下载phpflicker并将其放在服务器的根目录下
将此PHP代码添加到gallery.PHP文件中
下面是带有分页的PHP库的代码
<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'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'>« <strong>Prev</strong></a>";
}
// if not last page
if($page != $pages) {
echo "<a style='float:right' href='?page=$next'><strong>Next</strong> »</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>
嗯,它们不是用来下载的,但我明白了。我只是想知道,既然我是摄影画廊的新手,“最佳实践”是什么:)谢谢你的回答。关于是否应该使用BLOB,今天有一场巨大的辩论,双方都有强烈的论据,但必须在上下文中确定。我没有提到的一件事是进行检查以确保文件不会在没有从数据库中删除其记录的情况下从文件服务器上丢失。不应该发生,但可以。可能会建议设置一个自动任务,每隔一段时间检查一次,以确保文档仍然存在,如果文档不存在,则采取行动(这显然是支持BLOB的一方会使用的一个论点)。好吧,它们不用于下载,但我明白了重点。我只是想知道,既然我是摄影画廊的新手,“最佳实践”是什么:)谢谢你的回答。关于是否应该使用BLOB,今天有一场巨大的辩论,双方都有强烈的论据,但必须在上下文中确定。我没有提到的一件事是进行检查以确保文件不会在没有从数据库中删除其记录的情况下从文件服务器上丢失。不应该发生,但可以。可能会建议设置一个自动任务,每隔一段时间检查一次,以确保文档仍然存在,并在文档不存在时采取行动(显然,支持BLOB的一方会使用这个参数)。