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

thinkphp的http::download怎么做下载文件,第1张

一、使用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: attachmentfilename=".$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)

谢谢关注~

因为浏览器无法解析php造成的,这时浏览器只能把php网页当作一个文件,因此就会d出窗口提示下载php网页。

可能是你电脑本身的问题,关闭所有浏览器,在运行里输入;点开始、运行,输入以下命令行, 然后按确定:

regsvr32 msxml3.dll

回车,如果出现成功的对话框d出。就可以了。还是不行分别输入以下命令试试。

regsvr32 shell32.dll

regsvr32 actxprxy.dll

regsvr32 shdocvw.dll

regsvr32 urlmon.dll

regsvr32 msjava.dll

regsvr32 browseui.dll

regsvr32 oleaut32.dll

regsvr32 mshtml.dll

还有一种可能就是你服务器配置出错了。自己配置的,测试下能不能执行php文件,如果不能执行,请修改相关设置,如果是idc服务商,请联系他们解决。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11467877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存