在php上下载时重命名zip内的文件

时间:2018-07-26 12:50:30

标签: php

我有一个问题要告诉我,如何下载zip并使用一些php代码将zip中的文件重命名?这是我的代码:

$file_path='../../files_pangkat/';
$file_names[0] = $ck_sk_terakhir[file_pangkat];
$zip = new ZipArchive();

//create the file and throw the error if unsuccessful
if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE )!==TRUE) {
    exit("cannot open <$archive_file_name>\n");
}

//add each files of $file_name array to archive
$zip->addFile($file_path.$file_names[0],$file_names[0]);
$zip->renameName($file_names[0], 'SK_PNS_'.$c_bio[nip_baru].'pdf');
echo $file_path.$file_names[0],$file_names[0]."<br />";
$zip->close();

//then send the headers to foce download the zip file 
header("Content-type: application/zip"); 
header("Content-Disposition: attachment; filename=$archive_file_name");  
header("Pragma: no-cache"); 
header("Expires: 0"); 
readfile("$archive_file_name");
unlink("$archive_file_name");
exit;

$file_names是我保存在数据库中的文件名,但是当我使用$zip->renameName()时,它不起作用..

2 个答案:

答案 0 :(得分:2)

先将文件添加到zip文件中,然后在此之后立即重命名新添加的文件似乎没有多大意义。

相反,您应该使用所需的文件名添加文件,另请参见addFile()上的手册。

所以您应该更改:

$zip->addFile($file_path.$file_names[0],$file_names[0]);
$zip->renameName($file_names[0], 'SK_PNS_'.$c_bio[nip_baru].'pdf');

收件人:

$zip->addFile($file_path . $file_names[0], 'SK_PNS_' . $c_bio[nip_baru] . 'pdf');

答案 1 :(得分:0)

Zip在文件上创建了一个锁。您不能即时重命名,将其关闭并再次重命名。 试试吧。

$zip->addFile('.....');
....
$zip->close();

$zip->renameName($file_names[0], 'SK_PNS_'.$c_bio[nip_baru].'pdf');