我想在PHP中显示一个blob(可以是jpg或png),所以我认为:
$soc ='5';
$sql = "Select fpsoc, type_logo, blob_logo from plogo_s where fpsoc ='".$soc."'";
$q = $base->prepare($sql);
$q->execute();
$q->bindColumn(1, $soc, PDO::PARAM_STR, 256);
$q->bindColumn(2, $type, PDO::PARAM_STR, 256);
$q->bindColumn(3, $blob_logo, PDO::PARAM_LOB);
$q->fetch(PDO::FETCH_BOUND);
header("Content-Type: ".$type);
fpassthru($blob_logo);
但我有这个错误:" fpassthru()期望参数1是资源,字符串给出" 我哪里错了? 谢谢你的帮助:)
编辑:$ type give" image / jpeg"但是当我在引号(没有变量)里面写这个时,就像那个标题一样(" Content-Type:image / jpeg")我的项目什么也没显示,我没有错误:/只是{{3} }
Edit2:这是我在数据库上传img的方式
$img_type = $_FILES['fic']['type'];
$img_nom = $_FILES['fic']['name'];
$img_blob = file_get_contents($_FILES['fic']['tmp_name']);
$sql = "INSERT INTO plogo_s (FPSOC, ID_LOGO, Blob_logo, Nom_logo, type_logo) VALUES (:soc, :id, :blob, :nom, :type) ";
$req = $base->prepare($sql);
$img_blob = addslashes($img_blob);
$soc = 'XX';
$id= null;
$req->bindParam(':blob',$img_blob);
$req->bindParam(':nom', $img_nom);
$req->bindParam(':soc', $soc);
$req->bindParam(':id', $id);
$req->bindParam(':type', $img_type);
$req->execute();
上传期间可能会有什么问题?
答案 0 :(得分:0)
fpassthru()函数需要文件指针的资源,但是在这里您将查询结果作为字符串传递给它。而不是使用fpassthru你只需要回显字符串。
尝试,
header("Content-Type: ".$type);
header("Content-Length: " . strlen($blob_logo));
echo $blob_logo;
exit();