使用php从blob字段下载图像到硬盘

时间:2013-02-19 07:25:19

标签: php mysql

我有一个mysql blob字段,我们的团队在其中为每条记录存储了一个图像。现在我想通过php脚本下载硬盘上的所有图像。我们将非常感谢您的快速反应。

最诚挚的问候......

阿伊莎

3 个答案:

答案 0 :(得分:1)

$result=mysql_query("SELECT * FROM test WHERE 1");
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $filename = rand(1, 100).'.txt';
    file_put_contents('./'.$filename, $row['blob']);
}

这是有效的(测试过的) 它将以随机文件名(1-100.txt)保存文件 您可以通过更改$ filename来更改文件名。

这是一个简单的示例MySQL表,包含2个包含内容测试#1和测试#2的演示文件:

CREATE TABLE IF NOT EXISTS `test` (`blob` blob NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `test` (`blob`) VALUES(0x5468697320697320746573742023312e), (0x5468697320697320546573742023322e);

答案 1 :(得分:0)

你可以使用file_put_contents,

从数据库中获取行并预先将行blob / data写入文件

Error in Writing to Image file from PHP

http://php.net/manual/en/function.file-put-contents.php

答案 2 :(得分:0)

你也可以尝试这个........

function save_file($file_id, $target_folder) {
$result       = $DB->get_file($file_id);   
$file_content = $result->fields['your_file_content_field'];
$name         = $result->fields['name'];

/* Decode only if the file contents base64 encoded 
 * before inserting to database.
 */
$file_content = base64_decode($file_content);

return file_put_contents($target_folder.'/'.$name, $file_content);
}