我从目录创建zip文件,如下所示:
<?php // On instancie la classe.
$zip = new ZipArchive();
if($zip->open($cheminAlbum.'.zip', ZipArchive::CREATE) == TRUE)
{
$fichiers = scandir($cheminAlbum.'/');
// On enlève . et .. qui représentent le dossier courant et le dossier parent.
unset($fichiers[0], $fichiers[1]);
foreach($fichiers as $f) {
if(!$zip->addFile($cheminAlbum.'/'.$f, $f)) {
echo 'Impossible d'ajouter "'.$f.'".<br/>';
} else {
echo 'Fichier ajouter " : '.$f.'".<br/>';
}
}
$zip->close();
} else {
echo 'Erreur, impossible de créer l'archive.';
}
?>
我添加下载链接:
<a href="<?php echo $cheminAlbum.'.zip';?>"> Download Album </a>
当我访问目录时,我在调用php页面后没有找到zip文件 当我点击链接时,文件不存在
当我调试(添加回声)
时,文件正确添加到zip我在代码中忘记了什么?
答案 0 :(得分:0)
问题在于文件名。你的代码正在创建一个foldername / .zip文件而不是foldername / album1.zip检查下面的代码在url中添加一个动态文件名并在开始时
在创建和提供文件访问权限时,您需要考虑两件事。在创建文件时,您需要使用文件系统路径,当您提供链接时,您需要提供文件的URL
<?php // On instancie la classe.
$zip = new ZipArchive();
$filename = "somealbumName";
if($zip->open($cheminAlbum.'/'.$filename.'.zip', ZipArchive::CREATE) == TRUE)
{
$fichiers = scandir($cheminAlbum.'/');
// On enlève . et .. qui représentent le dossier courant et le dossier parent.
unset($fichiers[0], $fichiers[1]);
foreach($fichiers as $f) {
if(!$zip->addFile($cheminAlbum.'/'.$f, $f)) {
echo 'Impossible d'ajouter "'.$f.'".<br/>';
} else {
echo 'Fichier ajouter " : '.$f.'".<br/>';
}
}
$zip->close();
} else {
echo 'Erreur, impossible de créer l'archive.';
}
?>
<a href="<?php echo $cheminAlbum.'/'.$filename.'.zip';?>"> Download Album </a>
答案 1 :(得分:0)
除非它在另一个文件中定义但您没有显示,否则$ cheminAlbum将没有任何价值。所以,你的锚无处可去。 您是否尝试过添加调试语句,例如使用print_r()打印变量值?您是否确定已定义变量,并且如果不在您正在访问它们的文件中,则包含它们的文件?
答案 2 :(得分:0)
我使用了这个功能,在文件夹中创建了一个zip。我打算在下载后,从服务器中删除zip
<?php // On instancie la classe.
$zip = new ZipArchive();
$filename = "$nom_ref";
$cheminAlbum = "../../../../Images-Produits/2018/$nom_ref";
if($zip->open($cheminAlbum.'/'.$filename.'.zip', ZipArchive::CREATE) == TRUE)
{
$fichiers = scandir($cheminAlbum.'/');
// On enlève . et .. qui représentent le dossier courant et le dossier parent.
unset($fichiers[0], $fichiers[1]);
foreach($fichiers as $f) {
if(!$zip->addFile($cheminAlbum.'/'.$f, $f)) {
//echo 'Impossible d'ajouter "'.$f.'".<br/>';
} else {
//echo 'Fichier ajouter " : '.$f.'".<br/>';
}
}
$zip->close();
} else {
//echo 'Erreur, impossible de créer l'archive.';
}
?>
<a href="<?php echo $cheminAlbum.'/'.$filename.'.zip';?>" action="action" class="btn btn-dropbox" title="Télécharger <?php echo $nom_ref; ?>.zip" style="float: left;">
<i class="fa fa-download"></i> TÉLÉCHARGER .ZIP</a>