有两种选择,您可以使用数据协议,它将整个图像嵌入到背景的 URL 中(如果图像大于几 kb,则不建议这样做。)或者您可以使用脚本通过编码或记录图像的唯一键来呈现图像,例如 bg.php?id=4323-34442-3432-4532 检查 db 的 id 以检索文件路径,然后使用正确的内容类型回显内容。
一些例子;
基于数据 URI维基百科页面
数据 URI 方法
假设这样的功能;
function data_uri($fileID) {
$fRecord = mysql_fetch_array(
mysql_select("SELECT filePath, mimeType from fileTable WHERE fileID = " $fileID . ";")
);
$contents = file_get_contents($fRecord['filePath']);
$base64 = base64_encode($contents);
return "data:$fRecord['mimeType'];base64,$base64";
}
然后在您的 html/php 页面中,您将拥有以下代码段
style="background-image:url('<?php echo data_uri($fileID);?>'
PHP 图像转储
假设这样的功能;
// Given a filename and a mimetype; dump the contents to the screen
function showDocumentContent($fileID){
$fRecord = mysql_fetch_array(
mysql_select("SELECT filePath, mimeType from fileTable WHERE fileID = " $fileID . ";")
);
header( 'Content-Encoding: none', true );
header( 'Content-Type: ' . $fRecord['mimeType'], true );
echo readfile( $fRecord['filePath'] );
}
然后在你的 html 页面中你会有这个;
style="background-image:url('image.php?fileID=123')
在第一种情况下,大于几 KB 的图像将产生同样大的 HTML 页面,并且可能不会在浏览器中得到一致的支持。在第二种情况下,您实际上已经创建了一个伪装成图像的 php 脚本。在这两种情况下,通过在数据库中存储映射来抽象出服务器上二进制文件的真实路径。