繁体   English   中英

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

[英]renaming files inside zip while download on 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() ,它不起作用..

首先将文件添加到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');

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM