【问题标题】:Delete zip file after download in zf2在 zf2 中下载后删除 zip 文件
【发布时间】:2016-09-26 05:26:39
【问题描述】:

我想在下载后删除 zip 文件。我尝试以下代码。但它显示错误

$response = new \Zend\Http\Response\Stream();
$response->setStream(fopen($zipname, 'r'));
$response->setStatusCode(200);
$headers = new \Zend\Http\Headers();
$headers->addHeaderLine('Content-Type', 'application/octet-stream')
        ->addHeaderLine('Content-Disposition', 'attachment; filename='.basename($zipname))
        ->addHeaderLine('Content-Length', filesize($zipname));

$response->setHeaders($headers);
unlink($zipname);
return $response;

下载后,我在记事本中打开下载的文件,显示如下:

取消链接(D:\xampp\htdocs\medgenom\development\uploads/Bulk_formE_Download_0.91481200 1474869559.zip):权限被拒绝

【问题讨论】:

  • 看起来您在向客户端发送响应之前要删除文件?你真的应该向我们展示你遇到的错误......
  • 我更新了@MagnusEriksson 的问题
  • 就像消息说的那样,运行 PHP 的用户似乎没有删除文件的权限。
  • 不,我可以使用取消链接功能删除其他文件。删除使用 php.ini 创建的 zip 文件时出现此问题。 @MagnusEriksson

标签: php download zend-framework2 zip


【解决方案1】:

我用下面的代码解决了

header('Content-Type', 'application/octet-stream');
header("Content-Disposition: attachment; filename=".basename($zipname));
header('Content-Length', filesize($zipname));
header("Pragma: no-cache");
header("Expires: 0");
readfile($zipname);

unlink($zipname);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    相关资源
    最近更新 更多