最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP操作ZipArchive實(shí)現(xiàn)文件上傳下載功能

 更新時(shí)間:2024年03月27日 09:38:53   作者:stark張宇  
在很多實(shí)際生產(chǎn)場(chǎng)景都需要批量上傳、下載一些文件的處理,本文將利用PHP?ZipArchive實(shí)現(xiàn)文件上傳下載功能,有需要的小伙伴可以參考一下

概述

在很多實(shí)際生產(chǎn)場(chǎng)景都需要批量上傳、下載一些文件的處理,整理了使用PHP語(yǔ)言操作ZipArchive實(shí)踐和實(shí)例,ZipArchive需要服務(wù)器上安裝zlib庫(kù),php擴(kuò)展中安裝zip擴(kuò)展。

服務(wù)器環(huán)境擴(kuò)展

ZipArchive類庫(kù)的PHP版本要求如下,另外php需要查看是否已經(jīng)成功安裝zip擴(kuò)展,服務(wù)器上需要安裝zlib包,具體查看方法在下面的代碼段里。

# ZipArchive 類版本要求,來(lái)自官網(wǎng)
# (PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

#查看是否安裝zlib包
yum list installed | grep zlib


php-fpm -m | grep zip
zip

$zipVersion = phpversion('zip');
echo "Zip Extension Version: " . $zipVersion.PHP_EOL;

# 輸出結(jié)果 
# Zip Extension Version: 1.15.6

實(shí)踐

ZipArchive類,使用范圍非常豐富,這篇博客里主要介紹上傳和下載功能,先整理下載的實(shí)踐實(shí)例,有幾點(diǎn)需要特別注意的點(diǎn):

  • 目錄和文件的權(quán)限,包括復(fù)制的源文件和目標(biāo)文件
  • 移動(dòng)的文件夾一定要存在
  • ZipArchive擴(kuò)展所需要的zlib和zip擴(kuò)展,注意版本的差異性

文件下載

文件下載相對(duì)比較容易,先創(chuàng)建一個(gè)空的zip包,在把需要壓縮的文件添加進(jìn)zip包里。

//壓縮包生成的路徑,最后文件添加在這個(gè)zip包中
$destination = '/home/wwwroot/testDemo.zip';

if (!file_exists(dirname($destination))) {
    mkdir(dirname($destination), 0777, true);
}

$zip = new ZipArchive;
if ($zip->open($destination, ZIPARCHIVE::CREATE) !== true) {
    echo '服務(wù)器錯(cuò)誤'.PHP_EOL;
}

$filePath = '/server_images/data/勞務(wù)派遣協(xié)議.pdf';

$fileSuffix = pathinfo($filePath,PATHINFO_EXTENSION); // 輸出 pdf
$fileName = pathinfo($filePath, PATHINFO_FILENAME);   // 輸出 勞務(wù)派遣協(xié)議
$rename = 'stark_' . $fileName.'.'.$fileSuffix; //新名字

#把路徑$filePath 生成到zip包中,$rename是新的文件名
$zip->addFile($filePath,  $rename );

# 創(chuàng)建目錄的路徑
$createPathName = '';
$zip->addEmptyDir($createPathName);
$zip->close();

$strFile = '勞務(wù)派遣協(xié)議.zip';
header("Content-type:application/zip");
header("Content-Disposition:attachment;filename=" . $strFile);
readfile($destination);

文件上傳

1、文件上傳相對(duì)比較麻煩,首先要把文件移動(dòng)到指定的目錄下,demo中的例子是$file_path

$file_path = '/home/wwwroot/upload/';
if (!is_dir(dirname($file_path))) {
    mkdir(dirname($file_path), 0777, true);
}
//把文件移動(dòng)到$file_path目錄里
if( is_uploaded_file($_FILES['file']['tmp_name']) ) {
    $move_re = move_uploaded_file($_FILES['file']['tmp_name'], $file_path);

    if (!$move_re) {
        echo '上傳失敗'.PHP_EOL;
    }
}else{
    echo '請(qǐng)檢查數(shù)據(jù)來(lái)源'.PHP_EOL;
}

2、對(duì)壓縮包進(jìn)行解壓

$destination = '/home/wwwroot/labor_con2.zip';

$zip = new ZipArchive;
if ($zip->open($destination, ZIPARCHIVE::CREATE) !== true) {
    echo '服務(wù)器錯(cuò)誤'.PHP_EOL;
}

//解壓到目標(biāo)目錄 $extractDir
$extractDir = '/home/wwwroot/zip';
if (!is_dir($extractDir)) {
    mkdir($extractDir, 0777, true);
}

$zip->extractTo($extractDir);
$zip->close();

3、把解壓的文件移動(dòng)到目標(biāo)的資源文件夾里

$zipName = 'labor_con2';
$realExtractDir = $extractDir.'/'.$zipName.'/';
$folders = scandir($realExtractDir);

//把$extractToPath 移動(dòng)到 $targetSrc位置
$targetDir = '/server_images/data/target/';
if (!is_dir($targetDir)) {
    mkdir($targetDir, 0777, true);
}

foreach ( $folders as $file){
    if(!in_array($file,['.','..','.DS_Store'])){

        $sourceSrc = $realExtractDir.$file;
        $targetSrc = $targetDir.$file;

        if (file_exists($sourceSrc)) chmod($sourceSrc, 0755);
        if (file_exists($targetSrc)) chmod($targetSrc, 0755);

        $result = copy($sourceSrc, $targetSrc);
        if($result){
            echo '文件復(fù)制成功了'.PHP_EOL;
        }
    }
}

到此這篇關(guān)于PHP操作ZipArchive實(shí)現(xiàn)文件上傳下載功能的文章就介紹到這了,更多相關(guān)PHP ZipArchive文件上傳下載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • php token使用與驗(yàn)證示例【測(cè)試可用】

    php token使用與驗(yàn)證示例【測(cè)試可用】

    這篇文章主要介紹了php token使用與驗(yàn)證方法,通過(guò)對(duì)form表單hidden提交字段的處理實(shí)現(xiàn)token驗(yàn)證功能,防止非法來(lái)源數(shù)據(jù)的訪問(wèn),需要的朋友可以參考下
    2017-08-08
  • php mysql PDO 查詢操作的實(shí)例詳解

    php mysql PDO 查詢操作的實(shí)例詳解

    這篇文章主要介紹了php mysql PDO 查詢操作的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • php日期轉(zhuǎn)時(shí)間戳,指定日期轉(zhuǎn)換成時(shí)間戳

    php日期轉(zhuǎn)時(shí)間戳,指定日期轉(zhuǎn)換成時(shí)間戳

    UNIX時(shí)間戳和格式化日期是我們常打交道的兩個(gè)時(shí)間表示形式,Unix時(shí)間戳存儲(chǔ)、處理方便,但是不直觀,格式化日期直觀,但是處理起來(lái)不如Unix時(shí)間戳那么自如,所以有的時(shí)候需要互相轉(zhuǎn)換,下面給出PHP日期轉(zhuǎn)時(shí)間戳、MySQL日期轉(zhuǎn)換函數(shù)互相轉(zhuǎn)換的幾種轉(zhuǎn)換方式
    2012-07-07
  • 通達(dá)OA公共代碼 php常用檢測(cè)函數(shù)

    通達(dá)OA公共代碼 php常用檢測(cè)函數(shù)

    從通達(dá)OA公共代碼扒下的php常用檢測(cè)函數(shù)代碼,學(xué)習(xí)php的朋友可以參考下。
    2011-12-12
  • 說(shuō)明的比較細(xì)的php 正則學(xué)習(xí)實(shí)例

    說(shuō)明的比較細(xì)的php 正則學(xué)習(xí)實(shí)例

    首先,讓我們看看兩個(gè)特別的字符:’^’ 和 ‘$’ 他們是分別用來(lái)匹配字符串的開始和結(jié)束,一下分別舉例說(shuō)明
    2008-07-07
  • PHP實(shí)現(xiàn)git部署的方法教程

    PHP實(shí)現(xiàn)git部署的方法教程

    雖然一直用git做版本管理,以前也用過(guò)git項(xiàng)目的部署,但都沒(méi)有堅(jiān)持這種習(xí)慣,最近決定再學(xué)習(xí)下,下面這篇文章主要給大家介紹了關(guān)于PHP實(shí)現(xiàn)git部署的方法教程,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • PHP獲取二叉樹鏡像的方法

    PHP獲取二叉樹鏡像的方法

    這篇文章主要介紹了PHP獲取二叉樹鏡像的方法,涉及php使用隊(duì)列針對(duì)二叉樹進(jìn)行翻轉(zhuǎn)的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • 解析php根據(jù)ip查詢所在地區(qū)(非常有用,趕集網(wǎng)就用到)

    解析php根據(jù)ip查詢所在地區(qū)(非常有用,趕集網(wǎng)就用到)

    本篇文章是對(duì)php根據(jù)ip查詢所在地區(qū)的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • PHPstorm快捷鍵(分享)

    PHPstorm快捷鍵(分享)

    下面小編就為大家?guī)?lái)一篇PHPstorm快捷鍵(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • PHP 彩色文字實(shí)現(xiàn)代碼

    PHP 彩色文字實(shí)現(xiàn)代碼

    最近流行彩字,下面是簡(jiǎn)單的實(shí)現(xiàn)代碼。喜歡php的朋友可以看看。
    2009-06-06

最新評(píng)論

双峰县| 额济纳旗| 邢台县| 来宾市| 紫阳县| 密山市| 定南县| 揭西县| 上饶县| 明光市| 海安县| 桐庐县| 广宗县| 永寿县| 万州区| 德安县| 文成县| 贡山| 耿马| 吉木乃县| 海原县| 昭觉县| 宁海县| 三都| 拉孜县| 祁门县| 合阳县| 高唐县| 延长县| 都昌县| 万源市| 蚌埠市| 岳池县| 夏河县| 乐陵市| 眉山市| 博客| 博兴县| 隆安县| 板桥市| 潮州市|