如何在点击服务器上的下载链接后删除下载的文件



我正在生成一个.MSI文件并提供下载链接。但下载后我需要删除该文件(如果用户选择"保存"而不是取消)。请在这方面给我一些输入。

我想使用readfile(),但它会通过输出到browser.但我的情况并非如此。我需要点击下载MSI文件。

<a href="http://localhost/john_CI/june/Enterprise-Setup_test.msi" id='32_bit_url1'>32-bit suite </a> 

制作这样的控制器函数:

public function download($id) {
        $this->load->helper('download');
        $filepath = "url/" . $id;
        force_download("file-name", $filepath);
        ignore_user_abort(true);
        unlink($filepath);
    }

最好这样做。

                header('Content-Description: File Transfer');
                header('Content-Type: application/octet-stream');
                header('Content-Disposition: attachment;  filename='.basename($file));
                header('Expires: 0');
                header('Cache-Control: must-revalidate');
                header('Pragma: public');
                header('Content-Length: ' . filesize($file));
               // Ignore user aborts and allow the script to run                                        
                ignore_user_abort(true);
                //read the contents and store in memory
                readfile($file);
                //remove the file after download
                unlink($file);

我不知道你为什么要在下载终止后立即删除文件,无论如何,如果可以的话,最好有另一种方法来处理这种事情。为什么不将链接保存在数据库表中并给它一个过期日期?通过这种方式,您的用户可以下载文件,直到链接处于活动状态,然后您可以轻松删除过期的文件。

相关内容

  • 没有找到相关文章

最新更新