zoukankan      html  css  js  c++  java
  • php (zip)文件下载设置

    普通下载头大概意思,文件输出的地方二选一,小文件下载。如文件较大时注意执行时间与内存使用。可以看php大文件下载

    $filename = $_GET['filename'];
    $pathname = "./sucai/$filename";
    $filesize = filesize($pathname);
     
    //跟据路径下载文件
    //字节流的方式发送到客户端
    header("content-type:application/octet-stream"); 
    //header("content-type:application/force-download");
      
    //关于断点续传,服务器支持
    header("Accept-Ranges:bytes") ;
     
    //以附件的形式发送到客户端
    header('Content-Disposition: attachment; filename="' . basename($path) . '"');
     
    //文件大小比对
    header("Content-Length: ". filesize($path));
     
    readfile($path);
     
    $handle = fopen($pathname, 'rb');
    $content = '';
    while (!feof($handle)) {
       $content .= fread($handle, 1024);
    }
    fclose($handle);
    echo $content;
    

    项目中用到zip批量打包下载文件,小文件下载。如文件较大时注意执行时间与内存使用。可以看php大文件下载

    $param = [
        'uid'   => 1,
        'title' => $db->escape_string('title','string', 'G'),
        'annex' => $db->escape_string('annex','string', 'G'),
    ];
    
    RequestCheck::checkParam($param['title'], 'title');
    RequestCheck::checkParam($param['annex'], 'annex');
    
    $title = '文档下载';
    $content = serialize($param);
    
    get_logadd(0, $content, $title, 25, $_USER->id);
    
    if (false !== strpos($param['annex'], ',')) {
        $param['annex'] = explode(',', $param['annex']);
    } else {
        $param['annex'] = [$param['annex']];
    }
    
    if (false !== strpos($param['title'], '.')) {
        $param['title'] = explode('.', $param['title'])[0];
    }
    
    $filename = $param['title'] . '_' . date('Y-m-d H-i-s') . '_' . rand(100, 999) . '.zip';
    
    $files = $param['annex'];
    
    $tmpFile = tempnam('./cache', '');
    
    $zip = new ZipArchive;
    $zip->open($tmpFile, ZipArchive::CREATE);
    foreach ($files as $file) {
        $fileContent = file_get_contents($file);
        $zip->addFromString(basename($file), $fileContent);
    }
    $zip->close();
    
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header('Content-Type: application/zip');
    header('Content-disposition: attachment; filename=' . $filename);
    header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
    header('Content-Length: ' . filesize($tmpFile));
    @readfile($tmpFile);
    
  • 相关阅读:
    Struts数据效验
    Struts2中国际化
    ValueStack对象
    Ognl表达式语言
    Struts2拦截器
    ubuntu下tomcat运行不起来解决
    Windows 下的SSH客户端
    远程管理控制ssh
    linux用户和组账户管理
    搭建Java服务器,并且实现远程安全访问linux系统
  • 原文地址:https://www.cnblogs.com/fuqian/p/10706081.html
Copyright © 2011-2022 走看看