解决php ZipArchive执行后无法生成zip文件的问题
来源:互联网 发布:深圳国税开票软件 编辑:程序博客网 时间:2024/05/22 03:50
以前写过一个zip压缩的东东,当时zip包用的是随机名,所以一路顺畅。但是今天下午遇到一个抓狂的问题就是zip程序执行之后没发现生成zip文件,代码并没有报错,折腾半天原来是系统编码问题。目前一般php都是utf8下写的,但是中文win下的ANSI用的是GBK编码,所以还得转GBK。
同样的函数问题还有很多:
file_exists
使用file_exists时如果你文件名或路径含中文,且php在uft8编码时,始终无法检测文件。
同样,filesize和readfile也有问题。basename 等等等等关于文件和文件名的操作。
一般的方法是老生常谈的
iconv转码或者用mb_convert_encoding
为了让测试机和服务器都顺畅的执行所以有以下示例代码:
$fileName="中文名的zip哟"; $this->fileName=$fileName; $this->fileNameGBK=iconv("utf-8", "GB2312//IGNORE", $this->fileName); //从服务器上添加文件的路径数组。随便塞点路径进去 $files = array (); //让basename支持中文 function get_basename($filename){ return preg_replace('/^.+[\\/]/', '', $filename);} $zip = new ZipArchive; //看看是windows还是linux系统 if(stripos($_SERVER['SystemRoot'],'windows')!==false){ $this->zipName=$this->fileNameGBK.".zip"; }else{ $this->zipName=$this->fileName.".zip"; } $this->zipFilePath=$dir."/".$this->zipName; //生成并打开zip $res = $zip->open( $this->zipFilePath, ZIPARCHIVE ::CREATE); if ($res === TRUE) { foreach ($files as $v) { $zip->addFile($v,get_basename($v)); //unlink($v); } $zip->close(); //echo 'ok'; } else { exit('failed:cant open the zip to add file'); }
0 0
- 解决php ZipArchive执行后无法生成zip文件的问题
- PHP ZipArchive 实现压缩解压Zip文件
- 使用PHP的ZipArchive类实现多个文件的zip压缩包打包下载
- 解决ubuntu 15.04 安装matlab后无法找到matlab执行文件的问题
- PHP ZipArchive::extractTo()函数.zip文件目录遍历漏洞
- PHP之Zip扩展,解压缩文件,ZipArchive类
- 解决R文件无法生成的问题
- php require_once()引入文件后,后面的代码无法执行
- php生成压缩zip文件的类
- 解决PHP用户登陆后无法退出问题的办法
- PHP 的解压缩ZipArchive中的extractTo()方法 LINUX+nginx环境中解压zip时文件丢失的问题
- labview中,用相对路径动态调用的子VI,在生成EXE文件后无法调用问题的解决
- PHP 压缩文件生成zip(解决中文文件名问题)
- java生成Zip文件,无法删除,资源被占用问题
- 解决maillog文件删除后无法重建的问题
- php 安装 zip库以使用ZipArchive
- 通过java解决linux下解压来自window生成的zip文件的乱码问题
- 临时解决ubuntu解压windows生成的zip文件时乱码问题
- 20160311 调研
- POJ 1061 青蛙的约会
- 链式栈C++实现
- 《Storm入门》中文版
- 玩转Nodejs日志管理log4js
- 解决php ZipArchive执行后无法生成zip文件的问题
- 获取指定的斜杠后面的内容
- IOS指令集
- 认识redis的数据结构
- 代码规范和一些技巧
- cvShowImage( )函数
- 对象类的创建和实例化
- 代码自定义导航栏
- 使用java反射机制对类字段进行选择性校验示例