【发布时间】:2019-04-17 16:34:07
【问题描述】:
我有一个从 Firebird 3.0 数据库接收到的 blob。
if($dbh = ibase_connect($db,$username,$password, 'UTF-8')){
echo "Connecton steht zur Firebird DB steht! <br>";
$sql = "SELECT MEMO FROM DMS where ID = '44'";
// Execute query
$rc = ibase_query($dbh, $sql);
// Get the result row by row as object
$data = ibase_fetch_object($rc);
$blob_data = ibase_blob_info($data->MEMO);
$blob_hndl = ibase_blob_open($data->MEMO);
$inhalt = ibase_blob_get($blob_hndl, $blob_data[0]);
有
ibase_blob_echo($data->MEMO)
浏览器中有很多标志,所以 SQL 查询有效。现在我想将内容(它的 PDF)写入磁盘上的 pdf 文件中。
每次尝试都没有成功:
file_put_contents('test.pdf', $inhalt);
file_put_contents('test.pdf', ibase_blob_echo($data->MEMO));
等等。
当我们尝试使用 Acrobat Reader 打开 PDF 文件时,出现错误消息:不支持任何 PDF 文件/文件类型
我们如何解决这个问题?
【问题讨论】:
-
列的数据类型是什么?鉴于您的问题描述,我怀疑它是
blob sub_type text,而不是blob sub_type binary,这意味着文件将被损坏。 -
也许您应该检查以en.wikipedia.org/wiki/List_of_file_signatures 开头的文件内容,并且有适用于 UNIX 和 Windows 的程序有它们的猜测数据库。附言你也关闭 BLOB 句柄吗?
-
人们必须在此处从 BLOB 中删除前缀:stackoverflow.com/questions/21608810Dunno,如果在此处应用的话
-
很可能博客很大,分成许多段,您只下载文件的第一段,删除所有其余部分。请参阅php.net/manual/ru/function.ibase-blob-get.php 的 cmets
-
@Arioch'The IIRC 这个问题是关于特定于应用程序的存储格式,而不是一般问题。