thinkphp的http::download怎么做下载文件 5

 我来答
从空去听8
2017-11-16 · TA获得超过7439个赞
知道大有可为答主
回答量:6907
采纳率:93%
帮助的人:5563万
展开全部

一、使用curlDownload 采集远程文件

/** * 采集远程文件 * @access public * @param string $remote 远程文件名 * @param string $local 本地保存文件名敏御 * @return mixed */static public function curlDownload($remote,$local) {
$cp = curl_init($remote);
$fp = fopen($local,"w");    curl_setopt($cp, CURLOPT_FILE, $fp);    curl_setopt($cp, CURLOPT_HEADER, 0);    curl_exec($cp);    curl_close($cp);    fclose($fp);
}

调用:

$Http = new \Org\Net\Http();
$Http::curlDownload("m/b64543a98226cffc9153e5b3bb014a90f603eab2.jpg", "./Public/file/1.jpg");

二、使用download 下载文件

/**   * 下载文件   * 可以指定下载显示的文件名,并自动发送相应的Header信息   * 如果指定了content参数,则下载该参数的内容   * @static   * @access public   * @param string $filename 下载文件名   * @param string $showname 下载显示的文件名   * @param string $content  下载的内容   * @param integer $expire  下载内容浏览器缓存时间   * @return void   */  static public function download ($filename, $showname='',$content='',$expire=180) {      if(is_file($filename)) {
$length = filesize($filename);
}elseif(is_file(UPLOAD_PATH.$filename)) {          $filename = UPLOAD_PATH.$filename;
$length = filesize($filename);
}elseif($content != '') {
$length = strlen($content);
}else {          E($filename.L('下载文件不存在!'));
}      if(empty($showname)) {          $showname = $filename;
}      $showname = basename($showname);if(!empty($filename)) {
$finfo     =  new \finfo(FILEINFO_MIME);
$type  =  $finfo->file($filename);        
}else{
$type  =  "application/octet-stream";
}      //发送Http Header信息 开始下载      header("Pragma: public");      header("Cache-control: max-age=".$expire);      //header('Cache-Control: no-store, no-cache, must-revalidate');      header("Expires: " . gmdate("D, d M Y H:i:s",time()+$expire) . "GMT");      header("Last-Modified: " . gmdate("D, d M Y H:i:s",time()) . "GMT");      桥悉岩header("Content-Disposition: attachment; filename=".$showname);      header("Content-Length: ".$length);      header("Content-type: ".$type);      header('Content-Encoding: none');      header("陆饥Content-Transfer-Encoding: binary" );      if($content == '' ) {          readfile($filename);
}else {       echo($content);
}      exit();
}

调用前,首先要确定有没有开启php_fileinfo扩展,没有的话,则会报错。。

wampserver开启方式:


选择php_fileinfo就行了

调用:

$Http = new \Org\Net\Http();$filename="Public/file/test.doc";
$showname="test.doc";
$content = "this";  // 表示下载的文件内容只有this$Http::download($filename, $showname, $content);

谢谢关注~

AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
百度网友0468555
2014-02-19 · TA获得超过2617个赞
知道答主
回答量:963
采纳率:0%
帮助的人:176万
展开全部
公交卡更厉害
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式