使用 PHP 进行创建文件并在下载后进行删除

需求:下载word文档,并且在下载后删除,不占用服务器空间

    //查询要下载的数据
    $html = Model::first()->content;
    //创建临时文件名字
    $fileName = Model::first()->title.".doc";
    //创建文件到指定目录
    file_put_contents("./doc/".$fileName,$html);
    //打开文件,如果文件不存在会进行创建
    $fp=fopen("./doc/".$fileName,"r");
    //返回文件大小
    $file_size=filesize("./doc/".$fileName);
    //下载文件需要用到的头
    Header("Content-type: application/octet-stream");
    Header("Accept-Ranges: bytes");
    Header("Accept-Length:".$file_size);
    Header("Content-Disposition: attachment; filename=".$fileName);
    $buffer=1024; //设置一次读取的字节数,每读取一次,就输出数据(即返回给浏览器)
    $file_count=0; //读取的总字节数
    //向浏览器返回数据
    while(!feof($fp) && $file_count<$file_size){
      //读取打开的文件
      $file_con=fread($fp,$buffer);
      $file_count+=$buffer;
      echo $file_con;
    }
    //关闭打开的文件
    fclose($fp);
    //下载完成后删除文件
    if($file_count >= $file_size)
    {
     unlink("./doc/".$fileName);
    }



    仅供参考
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

可以不用创建文件进行传输

3年前 评论

@likunyan 直接下载文件然后删除吗?

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!