我拥有的是来自数据库的备份数据。看起来像这样:
CREATE TABLE `accFiles` (
`accfile_id` int(11) NOT NULL AUTO_INCREMENT,
`accfile_accountId` smallint(5) unsigned NOT NULL,
`accfile_name` varchar(100) NOT NULL,
`accfile_type` varchar(100) NOT NULL,
`accfile_size` int(11) NOT NULL,
`accfile_content` mediumblob NOT NULL,
`accfile_extension` varchar(10) NOT NULL,
PRIMARY KEY (`accfile_id`),
KEY `IDX_accountId` (`accfile_accountId`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `accFiles` VALUES(1,6,"test.txt","text/plain",27,"test\ntest\ntest\ntest\ntsert","TXT");
INSERT INTO `accFiles` VALUES(2,6,"test.txt","text/plain",27,"test\ntest\ntest\ntest\ntsert","TXT");
CREATE TABLE.....
现在我编写了一个获取内容部分的php脚本,并将其写入一个与3值相同的文件中。编写php是为了获取第一行获取名称和内容,并创建一个具有该名称的文件并将内容写入其中。
<?php
//error_reporting(0);
$file = $argv[1]; //read console parameter
$filep = file_get_contents($file);//get content
$s1="INSERT INTO `accFiles`"; //Search the accfile part
$pos=strpos($filep,$s1); //first File
$end=strrpos($filep,$s1); //last file
$ind=0;
do{ // walk through file by file
$pos2=strpos($filep,$s1,$pos + 5);
$whant[$ind]=substr($filep,$pos+29,$pos2-$pos-30);
$ind++;
$pos=$pos2;
}while(is_numeric($pos2) && $end>=$pos2);
$whant[$ind-1]=substr($filep,$end+29,strpos($filep,"CREATE TABLE",$end)-$end-32); // last file
//echo $whant[0]."\n";
//echo $whant[1]."\n";
$theidd = explode(",",$whant[0]);
$filename = trim($theidd[2],"\"");
$input = substr($whant[0],strpos($whant[0],$theidd[5])+1,strrpos($whant[0],",")-strpos($whant[0],$theidd[5])-2); //get content of file 1
$myfile = fopen(dirname(__FILE__)."/".$filename, "w",1);
fwrite($myfile, $input);
fclose($myfile);
?>
所以我认为问题在于他写的数据与新的txt文件中的数据完全一样,所以内容是test \ ntest \ n的真实新行。 有趣的是,当我有.jpg文件或.gif时,它们的存储方式与内容完全相同,我将在此处发布。 但是我想能够得到原始图片或者它回来的文件。
答案 0 :(得分:0)
更便携的选择是安装MySQL并导入数据库的备份。然后您可以轻松执行以下操作:
select accfile_name, accfile_content from accFiles
迭代返回的结果并将每个文件写入磁盘,如下面的代码片段所示:
$outputdir = "/home/matthias/output/";
$sql = "select accfile_name, accfile_content from accFiles";
$result = mysql_query($sql, $db_con);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$filename = $row['accfile_name'];
$content = $row['accfile_content'];
$path = $outputdir . $filename;
$file = fopen($path, $content);
$fclose($file);
}