我有一个博客显示一堆图片。为了最大限度地减少服务器请求,我使用简单的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