我正在生成.MSI文件并提供下载链接。但是下载后我需要删除该文件(如果用户选择“保存”不取消)。请在这方面给我一些意见
我想使用readfile()但它会通过输出到browser.which不是我的情况。我需要点击下载MSI文件。
<a href="http://localhost/john_CI/june/Enterprise-Setup_test.msi" id='32_bit_url1'>32-bit suite </a>
答案 0 :(得分:0)
制作一个像这样的控制器功能:
public function download($id) {
$this->load->helper('download');
$filepath = "url/" . $id;
force_download("file-name", $filepath);
ignore_user_abort(true);
unlink($filepath);
}
答案 1 :(得分:0)
最好尝试这样做。
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);
答案 2 :(得分:0)
我不知道你为什么要在下载终止后立即删除文件,无论如何你可以更好地采用另一种方法来处理这类事情。 为什么不将链接保存在数据库表中并给它一个过期日期? 这样,您的用户就可以下载文件,直到链接处于活动状态,您可以在以后轻松删除过期的文件。