0

我有一个简单的 php 代码,它加载一个外部 XML 文件并将图片 URL 加载到我的数据库中。

然后我获取 URL 并将它们显示在我的网站上。

问题是我最终从我网站上的其他网站加载图片,这会影响加载时间 - 现在每页加载 20 张图片。

所以我在想,有没有办法将图像完全存储到我的数据库中,而不仅仅是 URL?

这是代码:

    $myfeed = 'xmlfeed.xml';

    $myfeed_xml = simplexml_load_file($myfeed);

    foreach($myfeed_xml->info as $myinfo){
        $pic0 = $myinfo->picture_url[0];
        $pic1 = $myinfo->picture_url[1];
        $pic2 = $myinfo->picture_url[2];
        $pic3 = $myinfo->picture_url[3];
        $pic4 = $myinfo->picture_url[4];  

        if($pic0 != ''){

            mysql_query("INSERT INTO ".$table." (pic0, pic1, pic2, pic3, pic4) VALUES ('$pic0', '$pic1', '$pic2', '$pic3', '$pic4')", $dbh);

        }
    }  

谢谢!

4

1 回答 1

0

为什么不将它们全部下载到您的服务器上,并使用您服务器上的链接更新数据库?只要版权政策同意...

// do your DB fetching here

//loop through all current db links
foreach($sqlResult as $result)
{

// build up file path to store newly downloaded image
$fPath="someFolder/pictures/";

// get/generate a name for the pics (I'll just use a radom number here, but you should avoid doing so if you are working with lots of urls as dups may happen)
$iName=mt_rand();

//join path and url together
$pAndURL=$fPath.$iName;

// get and put data
file_put_contents($pAndURL,file_get_contents($result['collumnWhereURLIsStored']);

//now update your DB with the new link ($pAndURL)

}//end of foreach

因此,上面的代码所做的只是通过数据库中的所有第 3 方链接并将其内容(图像)下载到您的服务器。然后,您可以简单地使用您自己的指向特定图像的链接来更新数据库。简单的。但是正如我之前提到的,请先检查版权许可,因为我确定您现在不想惹上麻烦,嗯?

于 2012-07-14T14:49:44.980 回答