解压缩文件,下载然后删除

时间:2018-01-09 14:17:03

标签: php file encryption download unzip

我有压缩,加密的文件。 压缩文件虽然有原始扩展名。他们没有.zip或任何其他压缩分机。

我有以下功能解密文件然后提供下载。 所以当我现在下载文件时,我正在获取解密文件,但仍然会被压缩。

我需要帮助才能在下载前实现解压缩。

function Download($path,$type,$key,$iv){
    if($type=="File"){
        if (file_exists($path)) {
            $fileBuffer = file_get_contents($path);
            $iv = str_pad($iv, 16, "\0");
            $cipher = base64_decode($fileBuffer);
            $plain = openssl_decrypt($cipher, "AES-256-CBC", $key, OPENSSL_RAW_DATA, $iv);
            file_put_contents($path, $plain);

            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename="'.basename($path).'"');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($path));
            readfile($path);

            $fileBuffer = file_get_contents($path);
            $iv = str_pad($iv, 16, "\0");
            $cipher = openssl_encrypt($fileBuffer, "AES-256-CBC", $key, OPENSSL_RAW_DATA, $iv);
            $cipher64 = base64_encode($cipher);
            file_put_contents($path, $cipher64);
            exit;
        }

1 个答案:

答案 0 :(得分:0)

有一个名为 ZipArchive 的内置表达式。您可以在函数内部使用它:

<p-dataTable [value]="data" sortField="room" rowGroupMode="subheader" groupField="room" expandableRowGroups="true"
    [sortableRowGroup]="false">
 <ng-template pTemplate="rowgroupheader" let-rowData>{{rowData.room}} - INFO</ng-template>
 <p-column field="status" header="ID"></p-column>
 <p-column field="name" header="Title"></p-column>
</p-dataTable>

解密后,你可以把它。

请参阅这些文档 - ZIPARCHIVEZIPARCHIVE 2

希望它有所帮助。