>  기사  >  백엔드 개발  >  jar 파일 패키징 php zip 패키징 다운로드 파일

jar 파일 패키징 php zip 패키징 다운로드 파일

WBOY
WBOY원래의
2016-07-28 08:30:191470검색
<ol>
<li>将文件打包成zip格式</li>
<li>下载文件的功能</li>
</ol><p>要点解析:</p><ol><li>这里我采用的是php自带的ZipArchive类</li></ol><p>    a) 我们只需要new一个ZipArchive对象,然后使用open方法创建一个zip文件,接着使用addFile方法,将要打包的文件写入刚刚创建的zip文件中,最好还得记得关闭该对象。</p><p>    b) 注意点:使用open方法的时候,第二个参数$flags是可选的,$flags用来指定对打开的zip文件的处理方式,共有四种情况</p><p>                    i.     <tt>ZIPARCHIVE::OVERWRITE</tt> 总是创建一个新的文件,如果指定的zip文件存在,则会覆盖掉</p><p>                      ii.    <tt>ZIPARCHIVE::CREATE</tt>     如果指定的zip文件不存在,则新建一个</p><p><tt>              iii.  </tt><tt>ZIPARCHIVE::EXCL      </tt><tt>如果指定的zip文件存在,则会报错   </tt></p><p><tt>               iv.  </tt><tt>ZIPARCHIVE::CHECKCON</tt></p>
$nid = <span>intval</span>($this-><span>_request</span>->getParam(<span>'nid'</span>))<span>;
</span>$filelist = $this-><span>model</span>->getOverenter($nid)<span>;
</span><span>foreach </span>($filelist <span>as </span>$f) {
    $row[<span>'file'</span>] = <span>ROOT</span>.<span>'/public/upload/logo/'</span>.$f[<span>'ne_file'</span>]<span>;
</span>$row[<span>'name'</span>] = $f[<span>'es_name'</span>]<span>;
</span>$ext = <span>explode</span>(<span>'.'</span><span>,</span>$f[<span>'ne_file'</span>])<span>;
</span>$row[<span>'ext'</span>] = $ext[<span>1</span>]<span>;
</span>$fileNameArr[]=$row<span>;
</span>}
$name = <span>date</span>(<span>'YmdHis'</span>).<span>'.zip'</span><span>;
</span>$filename = <span>ROOT</span>.<span>"/public/upload/"</span>.$name<span>; </span><span><em>// </em></span><span><em>最终生成的文件名(含路径)
</em></span>$zip = <span>new </span>ZipArchive ()<span>;
</span><span>if </span>(!<span>file_exists</span>($filename)) {
    $zip->open($filename<span>, </span><span>ZipArchive</span>::<span>CREATE</span>)<span>;</span><span><em>//</em></span><span><em>创建一个空的</em></span><span><em>zip</em></span><span><em>文件
</em></span><span><em></em></span><span>for </span>($i = <span>0</span><span>; </span>$i < <span>count</span>($fileNameArr)<span>; </span>$i&#43;&#43;) {
        $zip->addFile($fileNameArr[$i][<span>'file'</span>]<span>, </span><span>iconv</span>( <span>'UTF-8'</span><span>,</span><span>'GB2312'</span><span>, </span>$fileNameArr[$i][<span>'name'</span>]).<span>'.'</span>.$fileNameArr[$i][<span>'ext'</span>])<span>;
</span>}
    $zip->close()<span>;
</span><span><em>//</em></span><span><em>打开文件
</em></span><span><em></em></span><span>if</span>(<span>file_exists</span>($filename)){
        $file = <span>fopen</span>($filename<span>,</span><span>"r"</span>)<span>;
</span>Header(<span>"Content-type: application/octet-stream"</span>)<span>;
</span>Header(<span>"Accept-Ranges: bytes"</span>)<span>;
</span>Header(<span>"Accept-Length: "</span>.<span>filesize</span>($filename))<span>;
</span>Header(<span>"Content-Disposition: attachment; filename="</span>.$name)<span>;
</span><span>echo </span><span>fread</span>($file<span>, </span><span>filesize</span>($filename))<span>;
</span>$buffer=<span>1024</span><span>;
</span><span>while </span>(!<span>feof</span>($file)) {
            $file_data=<span>fread</span>($file<span>,</span>$buffer)<span>;
</span><span>echo </span>$file_data<span>;
</span>}
        <span>fclose</span>($file)<span>;
</span>}<span>else </span>{
        <span>echo </span><span>"<script>alert('file not exists!');</script>"</span><span>;
</span>}
}
<span>unlink</span>($filename)<span>;
</span><span>exit</span>()<span>;</span>

위 내용은 jar 파일 패키징 내용을 포함해 jar 파일 패키징, php zip 패키징, 파일 다운로드 방법을 소개하고 있으니 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.