我想在下载之前将MySQL数据库中的XML文件放到zip存档中。我能够创建zip文件,但Windows在打开时会出错。
错误消息:窗口无法打开foler。 filename.zip无效
这是我的代码:
<?php
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
if($id <= 0) {
die('The id is invalid!');
}
else
{
// Connect to the database
$dbLink = new mysqli('localhost', 'root', 'root', 'db');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}
$zip = new ZipArchive();
$filename = "export_".date('Y.m.d H.i').".zip";
if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE) !== true)
{
echo "Cannot Open for writing";
}
$zip->addEmptyDir('Section');
$query = "SELECT name,data FROM file_section WHERE id ='$id'";
$result = $dbLink->query($query);
if($result->num_rows == 1)
{
// Get the row
$row = mysqli_fetch_array($result);
}
while($row = mysql_fetch_array($result))
{
$zip->addFile($row['data'], "{$row['name']}.xml");
}
$zip->close();
header("Content-disposition: attachment; filename='.$filename'");
header('Content-type: application/zip');
readfile($fileName);
}
// Free the mysqli resources
mysqli_free_result($result);
}
else {
echo "Error! Query failed: <pre>{$dbLink->error}</pre>";
}
mysqli_close($dbLink);
?>
P.S。:我的PHP知识有限。
答案 0 :(得分:0)
测试:在您的zip对象addFile
之前创建一个临时文件
见http://php.net/manual/en/ziparchive.addfile.php
addFile
方法等待第一个参数a filename(要添加的文件的路径)
答案 1 :(得分:0)
这是我后来获得的工作解决方案。它对单个文件id输入有效。
HadoopRDD[0]=>completed=>MappedRDD[1]=>completed=>etc ?