【发布时间】:2016-12-18 19:40:34
【问题描述】:
我正在努力从 blob 中提取图片,如图所示 图像当前无法显示,因为它包含错误 当我下载它 解释 JPEG 图像文件时出错(不支持的标记类型 0x5c) 并尝试识别文件是哪个文件并通过“linux shell”获取它
[无]$ 文件 PICTURE.bin PICTURE.bin:JPEG 图像数据 识别:不支持的标记类型 0x5c `PICTURE.bin' @error/jpeg.c/JPEGErrorHandler/322
我尝试通过文本编辑器打开它,一开始就得到了这个奇怪的东西,而不是 JPEG 或 JPG。它在图像文件的开头显示类似“JFIF”的内容 我尝试了一个 php 脚本来提取图像并直接从 phpmyadmin 下载它,但没有成功 我使用的脚本是“不是我的,我在网上找到的”:
<?php
// ************* MODIFY THESE FOR YOUR SERVER AND DATABASE SETTINGS *************
// y = first letter in yourdomain.com
// o = second letter in yourdomain.com
$basedir = '/home/zzz/public_html/z/'; // Needs trailing slash
$host = 'localhost';
$user = 'zz'; //(user information)
$password= 'zz'; //(password information)
$dbname = 'zzz';
$type = 'jpg';
$blob_id = 'APLT_ID';
$blob_data = 'PICTURE';
$blob_table = 'zzzz';
// ************************************************** ***************
$db = mysql_connect($host, $user, $password) or die("Could not connect: " . mysql_error());
mysql_select_db($dbname, $db);
$sql = "SELECT $blob_id, $blob_data FROM $blob_table";
echo $sql;
$result = mysql_query($sql);
header('Content-Type: text/html; charset=utf-8');
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$id = $row["$blob_id"];
$data = $row["$blob_data"];
$file = "$basedir$id.$type";
echo "Looking for File: $file<br>";
if (!file_exists($file)) {
$fp=fopen($file,"w");
echo "Opening File: $file<br>";
fwrite($fp,$data);
echo "Writing File: $file<br>";
} else {
echo "Skipping File: $file<br>";
fclose($fp);
echo "Closeing File: $file<br>";
}
sleep(1);
}
mysql_free_result($result);
?>
图像可以编码吗?
因为在发布和寻求帮助之前,我只是浪费了 2 天的时间试图弄清楚这件事
【问题讨论】:
-
每次在新代码中使用the
mysql_数据库扩展a Kitten is strangled somewhere in the world 时,它都已被弃用,并且已经存在多年,并且在 PHP7 中永远消失了。如果您只是学习 PHP,请花精力学习PDO或mysqli数据库扩展。 Start here -
听起来好像存储不正确。您在获取文件时是否使用了
binmode或其他任何内容? -
不,我试图通过 phpmyadmin 或上面的这个脚本来获取它。
标签: php mysql sql encoding base64