如何将BLOB保存为.txt或.jpg等可读文件?

时间:2011-10-23 18:05:25

标签: php sqlite

尝试将此Blob保存到文件并将其作为图像加载时遇到很大麻烦。

使用SQLite Manager(Firefox附加组件)我能够“另存为”包含我的图像BLOB内容的文件。结果是一个奇怪的(对我来说)代码。

由于我不能发布“文件来源”,我附上了一个png示例。

example

在我的Mac中,保存的文件没有延伸,但我可以将其生成的图像视为缩略图。

所以我试图在保存一个文件的同时获得相同的结果,但我得到的是一个16字节的文件,我看不懂...

$pic = fopen('pics/thumbnails/pic_'.$id.'', 'w');
fwrite($pic, base64_encode($theFile));
fclose($pic);

*编辑*

$theFile = shell_exec("sqlite3 AddressBookImages.sqlitedb 'select data from ABThumbnailImage where record_id = ".$id."'");
if($theFile != '') {
    file_put_contents('pics/thumbnails/pic_'.$id.'.jpg', $theFile);
}

2 个答案:

答案 0 :(得分:0)

尝试使用(b代表二进制)

$pic = fopen('pics/thumbnails/pic_'.$id.'', 'wb');

答案 1 :(得分:0)

我找到了解决方法,但速度很慢,我发布了一个新问题,请求帮助以改善这一点。

$sql2 = shell_exec("sqlite3 ".$endereco_iphone."".$db_pics." 'select hex(data) from ABThumbnailImage where record_id = ".$id."'");
//
if($sql2 !='' && $sql2 != 'NULL') {
    $img = '';
    foreach(explode("\n",trim(chunk_split($sql2,2))) as $h) {
        $img .= chr(hexdec($h));
    }
    if(file_put_contents('pics/thumbnails/pic_'.$id.'.jpg', $img)) {
        $cnt .= "<img class='pics' src='pics/thumbnails/pic_".$id.".jpg' width='30px' height='30px'></img>";
    }
} else {
    $cnt .= "<div class='pics'></div>";
}