PHP - 压缩txt文件并保持文件扩展名

3
我想在PHP中压缩一个.txt文件,同时保留文件扩展名。当我解压缩.gz文件时,.gz文件中的扩展名(.txt)被移除了。(test.txt变成->test)
以下是我的PHP代码示例,用于将test.txt压缩为.gz文件:
<?php

// Name of the file we are compressing
$file = "test.txt";

// Name of the gz file we are creating
$gzfile = "test.gz";

// Open the gz file (w9 is the highest compression)
$fp = gzopen ($gzfile, 'w9');

// Compress the file
gzwrite ($fp, file_get_contents($file));

// Close the gz file and we are done
gzclose($fp);

?>

有人知道我做错了什么吗?还是因为 gzip 的限制?


gz不会保存扩展名。gzip在解压时只是去掉了“.gz”而已。(它不是一个归档文件,只是对文件进行了压缩) - bwoebi
如果我理解得正确,我认为你没有将文件加载到.gz文件中...你正在将文件内容加载到gz文件中。这里没有保留“文件名”,无论是否带有文件扩展名。你是想构建一个tar档案吗?猜测一下...test.txt的内容是什么?可能是“test”吗? - Wolfman Joe
@bwoebi 我不知道,.tar.gz 是一个好的选择吗? @WolfmanJoe test.txt 的内容确实是 test。我现在使用 .tar.gz PHP 压缩器,但在一些服务器上无法正常工作,所以我认为 .gz 是一个更好的选择。 - user1480019
你不需要针对单个文件使用tar。可以使用file.txt.gz。 - bwoebi
1
@bwoebi - "是否在.gz格式压缩时目录也不起作用"的后续问题解释了我之前为什么会问tar。如果想要压缩一个文件目录,Gerrit,你需要使用除简单gz压缩以外的其他工具。 - Wolfman Joe
1个回答

3

通常情况下,gzip在解压缩时不使用gzip头中的名称,并且您也没有在头中存储名称。它只是从文件名中删除.gz。如果要将其解压缩为test.txt,则需要将文件命名为test.txt.gz


谢谢你的回答!当以.gz格式压缩时,目录也无法工作吗? - user1480019
当然不行。gzip旨在压缩单个文件或数据流。您需要使用像.tar.gz.zip这样的格式来存储多个文件和目录结构。 - Mark Adler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接