我有一個博客顯示一堆圖片。爲了最大限度地減少服務器請求,我使用簡單的PHP函數將每個圖像編碼爲base64。base64_encode圖片未能通過AJAX請求打開流
我在我的博客上有一個無限的滾動功能,它使用AJAX向服務器發送請求以獲取頁面滾動中的更多博客。
的這裏的問題是,當編碼圖像中的Base64來通過AJAX請求,我得到的錯誤[function.file-get-contents]: failed to open stream: No such file or directory
Base64編碼的圖像完全顯示出來的時候都不會通過Ajax調用來..
這裏是我用轉換爲Base64 PHP函數:
// convert images to base64 for image URIs
function base64Data($sFile) {
// Switch to right MIME-type
$sExt = strtolower(substr(strrchr($sFile, '.'), 1));
// trim the first forward slash from the images
if(strpos($sFile, '/', 1)) {
$sFile = ltrim($sFile, '/');
}
switch($sExt)
{
case 'gif':
case 'jpg':
case 'jpeg':
case 'png':
$sMimeType = 'image/'. $sExt;
break;
case 'ico':
$sMimeType = 'image/x-icon';
break;
case 'eot':
$sMimeType = 'application/vnd.ms-fontobject';
break;
case 'otf':
case 'ttf':
case 'woff':
$sMimeType = 'application/octet-stream';
break;
default:
exit('Invalid extension file!');
}
$sBase64 = base64_encode(file_get_contents($sFile));
return "data:$sMimeType;base64,$sBase64";
}
路徑存儲在我的MySQL數據庫,像這樣/uploads/blogs/images/imagefile.jpg
這就是爲什麼我使用圖像修剪第一個斜槓。沒有它,file_get_contents()
無法在任何地方工作。
嘗試添加'var_dump($ sFile)'或其他一些調試實際路徑的方法,當你看到$ sFile是什麼時,錯誤可能會變得很明顯。 – Vatev 2013-03-23 18:02:23
似乎沒有正確提供$ sFile的位置,echo $ sFile或找到$ sFile – Vineet1982 2013-03-23 18:05:40
的校正位置,如果沒有正確提供'$ sFile',那麼爲什麼其他圖像在不通過AJAX時正確顯示? – 2013-03-23 18:06:40