在通过 php 下载之前向生成的 zip 文件添加注释
Add comment to generated zip file before download via php
希望你能帮我解决这个问题。我测试了一个非常简单的脚本来在下载之前向 zip 文件添加注释,它工作正常,所以现在我决定尝试将它实现到一个文件托管脚本中,但我无法找到一种方法来编辑生成的文件。
在此文件的第 59 行:https://pastebin.com/i3iBmW8s(这是为我的文件生成下载 link 的文件)您可以看到我的编辑,我也会 post以下:
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
# Create a new Archive
$zip = new ZipArchive;
# Create the file to archive to
$res = $zip->open($file, ZipArchive::CREATE);
# If create works
if ($res === TRUE) {
# Create the comment here
$zip->setArchiveComment(base64_encode($ipaddress));
$zip->close();
}
基本上它可以将下载者的 IP 附加到 zip 文件中,作为注释。
作为独立脚本,它工作正常,但我很难将它实现到文件托管脚本中,因为当文件下载时,它是未修改的。
我想问题出在变量 $file 上,它可能不正确,因为作为独立脚本,在其中指定存档的名称就足够了,以便附加评论然后下载它,而使用文件托管脚本,如果我分配保存文件名的变量(即 $file->originalFilename),仍然没有任何反应。
希望您能协助我正确执行我的脚本,谢谢。
事实证明我是对的,问题是变量 $file
不正确,因为脚本无法将其定义为对象
我四处寻找并找到了正确的变量,在文件托管脚本中保存了文件的完整路径,结果是:
$file->getFullFilePath()
希望你能帮我解决这个问题。我测试了一个非常简单的脚本来在下载之前向 zip 文件添加注释,它工作正常,所以现在我决定尝试将它实现到一个文件托管脚本中,但我无法找到一种方法来编辑生成的文件。
在此文件的第 59 行:https://pastebin.com/i3iBmW8s(这是为我的文件生成下载 link 的文件)您可以看到我的编辑,我也会 post以下:
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
# Create a new Archive
$zip = new ZipArchive;
# Create the file to archive to
$res = $zip->open($file, ZipArchive::CREATE);
# If create works
if ($res === TRUE) {
# Create the comment here
$zip->setArchiveComment(base64_encode($ipaddress));
$zip->close();
}
基本上它可以将下载者的 IP 附加到 zip 文件中,作为注释。
作为独立脚本,它工作正常,但我很难将它实现到文件托管脚本中,因为当文件下载时,它是未修改的。
我想问题出在变量 $file 上,它可能不正确,因为作为独立脚本,在其中指定存档的名称就足够了,以便附加评论然后下载它,而使用文件托管脚本,如果我分配保存文件名的变量(即 $file->originalFilename),仍然没有任何反应。
希望您能协助我正确执行我的脚本,谢谢。
事实证明我是对的,问题是变量 $file
不正确,因为脚本无法将其定义为对象
我四处寻找并找到了正确的变量,在文件托管脚本中保存了文件的完整路径,结果是:
$file->getFullFilePath()