如何使用PHP在MySQL中保存二进制数据?

时间:2012-05-31 14:00:34

标签: php

我想从一台服务器下载图像,并希望将binery数据保存到mysql blob字段中。但它不起作用。

  1. 如果我显示$ picture1,那么它会显示不可读的字符。 byt $ picture2没有显示。

  2. 如果我尝试将其保存在表格中,那么它就不会保存在表格中。

  3. 如何将其保存到我的blob字段中。

    $picture1 = GetImageFromUrl($url);
    $picture2 = addslashes(fread(fopen($picture, "r"), filesize($picture)));
    
    print_r($picture1)
    print_r($picture2)
    
    function GetImageFromUrl($link)
    {
    
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_POST, 0); 
    curl_setopt($ch,CURLOPT_URL,$link); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $result=curl_exec($ch); 
    curl_close($ch); 
    return $result;
    }
    

1 个答案:

答案 0 :(得分:1)

在保存到数据库字段之前,尝试使用base64对其进行编码:

echo base64_encode($picture1);

要从数据库中读出来,您需要解码它:

echo base64_decode($picture);

但请务必使用它发送正确的标题,例如:

header('Content-Type: image/png');

但请在之前阅读:Storing Images in DB - Yea or Nay?并考虑是否确实要将其保存在数据库中。

我严格反对它,但这是你的力量