首页 > 解决方案 > 将 HTML 输出转换为 BLOB 图像

问题描述

我想采取一些步骤将数据作为 BLOB 数据类型保存到 DB 中。我需要将数据转换为数据库中的 BLOB。我在某个文件中有被视为 HTML 输出的数据。选择的编程语言是带有 Zend Framework 1 的 PHP,数据库是 MySQL。

我试图将 HTML 页面保存为数据库中的有效 BLOB 图像,但它仍然无法正常工作。我找不到任何解决方案,我不知道该怎么做。当我从 URL 获取内容并使用函数 file_get_contents($url) 将其作为 BLOB 保存到 DB 中时,这对我来说很好。

这是一个将 HTML 页面的内容保存在下面描述的文件中作为 BLOB 到 DB 中的代码。

$file = "C:\test.html";
$fp = fopen($file, 'r');
$content = fread($fp, filesize($file));
fclose($fp);
$dbModel = new MyTable($this->db);
$dbRowSet = $dbModel->find(1);
$dbRow = $dbRowSet->current();
$dbRow->map = $content;
$dbRow->save();

这是在 DB 中保存的 HTML 页面的预览,但我无法显示任何 BLOB 图像。 图 1

显示了 BLOB 图像。我有 URL 页面并尝试将其保存到数据库中。 图 2

我预计将数据(HTML 页面)保存到 DB 中的结果应该是 DB 包含有效的 BLOB 图像。

谢谢您的帮助。

标签: phphtmldatabaseurlblob

解决方案


您可以从此链接下载 wkhtmltoimage 。有一个适用于所有操作系统的版本,所以这应该不是问题。然后你可以像这样使用它:

$path="wkhtmltoimg/wkhtmltoimage.exe"; //path to your executable
$url="http://google.com";
$output_path="test.png";
shell_exec("$path $url $output_path");

您要注意的一件事是,如果 PHP 处于安全模式,shell_exec 将无法工作,您将无法进行转换。

信用:@Tom 将 HTML 转换为 php 中的图像


在此之后,您只需要file_get_contents()并将 blob 保存在数据库中。


推荐阅读