tp5上传压缩包到相应文件并自动解压到相应文件下
<?php
namespace app\admin\controller\upload; use app\common\controller\Backend;
use think\db;
use think\Request;
use ZipArchive;
/**
* 上传功能
*
* @icon fa fa-user
*/
class Upload extends Backend{
protected $relationSearch = true;
public $file_path1 = "uploads/publishh.zip";
public $file_path2 = "E:\PHPTutorial\WWW\publishh";
public $file_path3 = "E:\PHPTutorial\WWW";
/**
* User模型对象
*/
protected $model = null;
public function _initialize()
{
parent::_initialize();
$this->model = model('Player');
}
// 文件上传表单
public function index(){
if(file_exists($this->file_path1)){
unlink($this->file_path1);
return $this->fetch();
}
else {
return $this->fetch();
}
}
//删除文件夹以及文件夹里面所有的文件
public function deldir($dir) {
//先删除目录下的文件:
$dh=opendir($dir);
while ($file=readdir($dh)) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
$this->deldir($fullpath);
}
}
}
closedir($dh);
//删除当前文件夹:
if(@rmdir($dir)) {
return true;
} else {
return false;
}
}
//解压一个压缩包
/**
* 解压zip文件到指定目录
* $filepath: 文件路径
* $extractTo: 解压路径
*/
public function dr_unZip($filepath,$extractTo) {
$zip = new ZipArchive;
$res = $zip->open($filepath);
if ($res === TRUE) {
//解压缩到$extractTo指定的文件夹
$zip->extractTo($extractTo);
$zip->close();
echo "success改正";
} else {
echo 'failed, code:' . $res;
}
}
//判断是否有子文件
public function hasFile($dirName) {
if(file_exists($dirName) && $handle = opendir($dirName)) {
while(false !== ($item = readdir($handle))) {
if($item!= "." && $item != ".."){
echo $item;
}
}
}
}
// 上传文件方法
public function upload(){
if(file_exists($this->file_path1)){ //包含需要先删除该wen
$unlink = unlink($this->file_path1);
if($unlink=true){
$file = request()->file('files');
if (empty($file)) {
$this->error('请选择上传文件');
}
// 移动到框架应用根目录/public/uploads/ 目录下
$info = $file->move(ROOT_PATH . 'public' . DS . 'uploads','');
if ($info) {
$del = $this->deldir($this->file_path2);
if($del=true){
$row = $this->dr_unZip($this->file_path1,$this->file_path3);
if($row=true){
$this->success('文件上传成功');
echo $info->getFilename();
} }
else {
echo "删除a目录失败";
}
}
else {
$this->error($file->getError());
}
}
else {
echo "删除失败";
}
}
else { //不包含就不用删除了
$file = request()->file('files');
if (empty($file)) {
$this->error('请选择上传文件');
}
// 移动到框架应用根目录/public/uploads/ 目录下
$info = $file->move(ROOT_PATH . 'public' . DS . 'uploads','');
if ($info) {
$del = $this->deldir($this->file_path2);
if($del=true){
$row = $this->dr_unZip($this->file_path1,$this->file_path3);
if($row=true){
$this->success('文件上传成功');
echo $info->getFilename();
} }
else {
echo "删除a目录失败";
}
}
else {
$this->error($file->getError());
}
}
}
}
tp5上传压缩包到相应文件并自动解压到相应文件下的更多相关文章
- zend framework将zip格式的压缩文件导入并解压到指定文件
html代码 <pre class="php" name="code"><fieldset> <legend>批量导入学生照 ...
- Linux文件压缩/打包/解压
在Linux日常维护中,经常需要备份同步一些比较重要的文件,而在传输过程中如果文件比较大往往会非常慢,而且还会非常占用空间,这时候就需要我们使用压缩工具对大文件进行压缩打包,下面我们来介绍一下常用的压 ...
- PHP上传压缩包并自解压方法
1.PHP上传压缩包并解压的大概流程: 普通上传功能->上传到服务器->加载系统组件->找到上传的文件并执行解压命令->成功解压到目录 2.php执行系统命令的几类函数: (1 ...
- PHP自动解压上传的rar文件
PHP自动解压上传的rar文件 浏览:383 发布日期:2015/07/20 分类:功能实现 关键字: php函数 php扩展 大家都知道php有个zip类可直接操作zip压缩文件,可是用户有时候 ...
- C# 上传RAR文件 解压 获取解压后的文件名称
此方法适用于C盘windows文件夹中有WinRAR.exe文件 if (fileExt.ToUpper() == ".RAR") { string zpath = Server. ...
- Java解压上传zip或rar文件,并解压遍历文件中的html的路径
1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception { HttpSession session = request.getSe ...
- 本地上传文件至服务器的技巧(linux文件压缩及解压文件)
linux(ubuntu)文件解压及压缩文件 ubuntu支持文件的解压及压缩功能, 如果ubuntu上面没有安装过unzip工具的话,可以通过下面命令安装: sudo apt-get install ...
- spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置
spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ ...
- Java压缩包解压到指定文件
在获得一个以Zip格式压缩的文件之后,需要将其进行解压缩,还原成压缩前的文件.若是使用Java自带的压缩工具包来实现解压缩文件到指定文件夹的功能,因为jdk提供的zip只能按UTF-8格式处理,而Wi ...
随机推荐
- Spring MVC基本配置和实现(三)
Item public class Item { private Integer id; private String name; public Integer getId() { return id ...
- Azure 中快速搭建 FTPS 服务
FTP,FTPS 与 SFTP 的区别 FTP (File Transfer Protocol)是一种常用的文件传输协议,在日常工作中被广泛应用.不过,FTP 协议使用明文传输.如果文件传输发生在公网 ...
- html5\CSS3有哪些新特性、移除了哪些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?
(1)HTML5现在已经不是SGML的子集,主要是关于图像,位置,存储,地理定位等功能的增加. 绘画canvas元素: 用于媒介回放的video和audio元素: 本地离线存储localStorage ...
- 【 PostgreSQL】工作中常用SQL语句干货
接触gp数据库近一年的时间,语法上和其他数据库还是有些许不同,工作中常用的操作语句分享给大家! -- 建表语句 create table ods.ods_b_bill_m ( acct_month t ...
- [翻译] MAThemeKit
MAThemeKit https://github.com/mamaral/MAThemeKit MAThemeKit provides iOS developers the ability to c ...
- yum 安装 lnmp
一. 系统 更新 yum -y update 二. 安装nginx 创建文件 vim /etc/yum.repos.d/nginx.repo 文件内容,这配置是安装最新的稳定版1.8 [nginx] ...
- Python学习---django模板继承180123
django模板继承 --20180123 a.include 模板标签 b.extend(继承)模板标签 ------include 模板标签 该标签允许在(模板中)包含其它的模板的内容. 标签的 ...
- Linux 系统的文件类型
Linux文件类型常见:普通文件.目录文件.字符设备文件和块设备文件.符号链接文件 1.1. 普通文件(-) ls -lh 来查看某个文件的属性,可以看到有类似-rwxrwxrwx,值得注意的是第一个 ...
- Nginx学习---企业级nginx环境搭建
1.1. nginx安装环境 1.系统要求 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. 1-1 安装 GCC 源码安装nginx需要依赖gcc环境,需要 ...
- 10、Node.js模块系统
##################################################################################介绍Node.js模块系统为了让No ...