我有压缩,加密的文件。 压缩文件虽然有原始扩展名。他们没有.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;
}
答案 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>
解密后,你可以把它。
请参阅这些文档 - ZIPARCHIVE和ZIPARCHIVE 2
希望它有所帮助。