gpt4 book ai didi

PHP实现打包下载文件的方法示例

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章PHP实现打包下载文件的方法示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了PHP实现打包下载文件的方法。分享给大家供大家参考,具体如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/**
* 下载文件
* @param $img
* @return string
*/
public function Download( $img )
{
     $items = [];
     $names = [];
     if ( $img )
     {
       //用于前端跳转zip链接拼接
       $path_redirect = '/zip/' . date ( 'Ymd' );
       //临时文件存储地址
       $path      = '/tmp' . $path_redirect ;
       if (! is_dir ( $path ))
       {
         mkdir ( $path , 0777,true);
       }
       foreach ( $img as $key => $value ) {
         $fileContent = '' ;
         $fileContent = $this ->CurlDownload( $value [ 'url' ]);
         if ( $fileContent )
         {
           $__tmp = $this ->SaveFile( $value [ 'url' ] , $path , $fileContent );
           $items [] = $__tmp [0];
           $names [] = $value [ 'name' ]. '_' .( $key +1). '.' . $__tmp [1];
         }
       }
       if ( $items )
       {
         $zip = new ZipArchive();
         $filename = time(). 'download.zip' ;
         $zipname = $path . '/' . $filename ;
         if (! file_exists ( $zipname )) {
           $res = $zip ->open( $zipname , ZipArchive::CREATE | ZipArchive::OVERWRITE);
           if ( $res ) {
             foreach ( $items as $k => $v ) {
               $value = explode ( "/" , $v );
               $end  = end ( $value );
               $zip ->addFile( $v , $end );
               $zip ->renameName( $end , $names [ $k ]);
             }
             $zip ->close();
           } else {
             return '' ;
           }
           //通过前端js跳转zip地址下载,让不使用php代码下载zip文件
           //if (file_exists($zipname)) {
             //拼接附件地址
             //$redirect = 域名.$path_redirect.'/'.$filename;
             //return $redirect;
             //header("Location:".$redirect);
           //}
           //直接写文件的方式下载到客户端
           if ( file_exists ( $zipname )) {
             header( "Cache-Control: public" );
             header( "Content-Description: File Transfer" );
             header( 'Content-disposition: attachment; filename=附件.zip' ); //文件名
             header( "Content-Type: application/zip" ); //zip格式的
             header( "Content-Transfer-Encoding: binary" ); //告诉浏览器,这是二进制文件
             header( 'Content-Length: ' . filesize ( $zipname )); //告诉浏览器,文件大小
             @readfile( $zipname );
           }
           //删除临时文件
           @unlink( $zipname );
         }
       }
       return '' ;
     }
}
/**
* curl获取链接内容
* @param $url
* @return mixed|string
*/
public function CurlDownload( $url ) {
     $ch = curl_init( $url );
     curl_setopt( $ch , CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
     curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
     curl_setopt( $ch , CURLOPT_HEADER, 0);
     curl_setopt( $ch , CURLOPT_CONNECTTIMEOUT, 20);
     curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, false);
     curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST, false);
     $errno   = curl_errno( $ch );
     $error   = curl_error( $ch );
     $res =curl_exec( $ch );
     curl_close( $ch );
     if ( $errno >0){
       return '' ;
     }
     return $res ;
}
/**
* 保存临时文件
* @param $url
* @param $dir
* @param $content
* @return array
*/
public function SaveFile( $url , $dir , $content )
{
     $fname   = basename ( $url ); //返回路径中的文件名部分
     $str_name  = pathinfo ( $fname ); //以数组的形式返回文件路径的信息
     $extname  = strtolower ( $str_name [ 'extension' ]); //把扩展名转换成小写
     $path    = $dir . '/' .md5( $url ). $extname ;
     $fp     = fopen ( $path , 'w+' );
     fwrite( $fp , $content );
     fclose( $fp );
     return array ( $path , $extname ) ;
}

引用:

?
1
2
$img = [[ 'url' => '地址url/1.jpg' , 'name' => '名字' ]];
Download( $img );

希望本文所述对大家PHP程序设计有所帮助.

原文链接:http://blog.csdn.net/alen_xiaoxin/article/details/72844469 。

最后此篇关于PHP实现打包下载文件的方法示例的文章就讲到这里了,如果你想了解更多关于PHP实现打包下载文件的方法示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com