精华内容
下载资源
问答
  • php如何解压压缩包

    2021-05-08 03:29:51
    } 推荐教程:PHP视频教程 以上就是php如何解压压缩包的详细内容,更多请关注Gxl网其它相关文章! 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

    5268f80b9b1e01f982625ef6fac83ca1.png

    a1de8756872a83abd4f0b8bcd15fa077.png

    php实现ZIP压缩文件解压缩

    第一个:需要开启配置php_aip.dll<?php

    //需开启配置 php_zip.dll

    //phpinfo();

    header("Content-type:text/html;charset=utf-8");

    function get_zip_originalsize($filename, $path) {

    //先判断待解压的文件是否存在

    if(!file_exists($filename)){

    die("文件 $filename 不存在!");

    }

    $starttime = explode(' ',microtime()); //解压开始的时间

    //将文件名和路径转成windows系统默认的gb2312编码,否则将会读取不到

    $filename = iconv("utf-8","gb2312",$filename);

    $path = iconv("utf-8","gb2312",$path);

    //打开压缩包

    $resource = zip_open($filename);

    $i = 1;

    //遍历读取压缩包里面的一个个文件

    while ($dir_resource = zip_read($resource)) {

    //如果能打开则继续

    if (zip_entry_open($resource,$dir_resource)) {

    //获取当前项目的名称,即压缩包里面当前对应的文件名

    $file_name = $path.zip_entry_name($dir_resource);

    //以最后一个“/”分割,再用字符串截取出路径部分

    $file_path = substr($file_name,0,strrpos($file_name, "/"));

    //如果路径不存在,则创建一个目录,true表示可以创建多级目录

    if(!is_dir($file_path)){

    mkdir($file_path,0777,true);

    }

    //如果不是目录,则写入文件

    if(!is_dir($file_name)){

    //读取这个文件

    $file_size = zip_entry_filesize($dir_resource);

    //最大读取6M,如果文件过大,跳过解压,继续下一个

    if($file_size

    $file_content = zip_entry_read($dir_resource,$file_size);

    file_put_contents($file_name,$file_content);

    }else{

    echo "

    ".$i++." 此文件已被跳过,原因:文件过大, -> ".iconv("gb2312","utf-8",$file_name)."

    ";

    }

    }

    //关闭当前

    zip_entry_close($dir_resource);

    }

    }

    //关闭压缩包

    zip_close($resource);

    $endtime = explode(' ',microtime()); //解压结束的时间

    $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);

    $thistime = round($thistime,3); //保留3为小数

    echo "

    解压完毕!,本次解压花费:$thistime 秒。

    ";

    }

    $size = get_zip_originalsize('../../textaa.zip','../../ffff/');

    上述方法中:$filename:文件名称,是要解压的文件名称,包括相对于方法的路径,$path表示的是:解压到(什么目录下,以/结束)。

    第二个方法是:使用pclzip自带的类,项目过程中因为路径的问题采用的第一种方法<?php

    /*

    php 从zip压缩文件中提取文件

    */

    $zip = new ZipArchive;

    if ($zip->open('test.zip') === TRUE) {//中文文件名要使用ANSI编码的文件格式

    $zip->extractTo('foldername');//提取全部文件

    //$zip->extractTo('/my/destination/dir/', array('pear_item.gif', 'testfromfile.php'));//提取部分文件

    $zip->close();

    echo 'ok';

    } else {

    echo 'failed';

    }

    推荐教程:PHP视频教程

    展开全文
  • 下载压缩包 解压出文件 组成可用的图片URL,显示到图片标签上 实现这个功能还是走了些弯路的,也遇到一些坑,这里就不多废话了,直接上代码,希望能帮助各位大佬快速实现这个功能。 首先是下载zip然后解压,官方给了...

    在做项目的时候有个这样的需求,需要把压缩包里的图片预览显示出来。
    梳理一下就以下三步:

    1. 下载压缩包
    2. 解压出文件
    3. 组成可用的图片URL,显示到图片标签上

    实现这个功能过程还是走了些弯路的,也遇到一些坑,这里就不多废话了,直接上代码,希望能帮助各位大佬快速实现这个功能。

    首先是下载zip然后解压,我这边用的是JSZIP,官方给了我们一个示例:

    https://stuk.github.io/jszip/documentation/howto/read_zip.html

    使用 JSZipUtils.getBinaryContent 方法去获取压缩包即可

    Vue为例,首先安装 JSZipUtils

    npm i jszip-utils
    

    然后在需要用到的组件中导入 JSZipUtils

    import JsZip from 'jszip'
    
    import JSZipUtils from 'jszip-utils'
    

    第一步,下载压缩包

    /*下载压缩包  返回的是个 ArrayBuffer */
    const zipResp = await JSZipUtils.getBinaryContent(zipUrl)
    
    

    返回的是Arraybuffer
    在这里插入图片描述

    第二步,解压缩

    上面拿到下载的zip数据后,就可以执行解压缩操作了。
    代码如下

            /*解压缩 返回的是个JSZip对象*/
            var jsZip = new JsZip()
            var imgData = await jsZip.loadAsync(zipResp)
    

    返回的是一个JSZIP对象

    在这里插入图片描述
    可以看到,key是文件名称,值是JSZipObject对象
    在这里插入图片描述
    我们需要关注的就是files里的数据即可。

    以下是全部代码,也比较简单:

            /*下载压缩包  返回的是个 ArrayBuffer */
            const zipResp = await JSZipUtils.getBinaryContent(zipUrl)
            console.log('zipResp:', zipResp)
            /*解压缩 返回的是个JSZip对象*/
            var jsZip = new JsZip()
            var imgData = await jsZip.loadAsync(zipResp)
            console.log('imgData:', imgData)
            /*filesKey就是文件名*/
            for (let filesKey in imgData.files) {
              imgName = filesKey
            }
            /*找出文件转成base64*/
            var base64Img = await imgData.file(imgName).async('base64')
            /*截取出后缀名*/
            const suffixName = imgName.split('.')[0]
            /*拼接url*/
            imgUrl = `data:image/${suffixName};base64,${base64Img}` 
    

    以上三步即可实现预览压缩包图片功能,希望能帮助你少走弯路。


    如果你觉得本文对你有帮助,麻烦动动手指顶一下,可以帮助到更多的开发者,如果文中有什么错误的地方,还望指正,转载请注明转自喻志强的博客 ,谢谢!

    展开全文
  • 来源:blog.csdn.net/Peacock__/article/details/92840156最近在做的功能模块有遇到下载ZIP文件的文件内容,一开始的想法是先通过代码执行解压,...

    来源:blog.csdn.net/Peacock__/article/details/92840156

    最近在做的功能模块有遇到下载ZIP文件里的文件内容,一开始的想法是先通过代码执行解压,然后读取文件内容,但是感觉好麻烦,于是度了一下,发现可以无需解压直接读取,而且还是JDK提供给我们的工具。(((o(゚▽゚)o)))

    解决方案就是通过ZipInputStream来读取。

    ZipInputStream在JDK中的util包中,而我们平时用的FileInputStream等都是在io包中的。

    使用方法如代码所示:

    public static void main(String[] args) throws IOException {
     
       //获取文件输入流
       FileInputStream input = new FileInputStream("C:\\Users\\Administrator\\Desktop\\test\\test.zip");
     
       //获取ZIP输入流(一定要指定字符集Charset.forName("GBK")否则会报java.lang.IllegalArgumentException: MALFORMED)
       ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(input), Charset.forName("GBK"));
     
       //定义ZipEntry置为null,避免由于重复调用zipInputStream.getNextEntry造成的不必要的问题
       ZipEntry ze = null;
     
       //循环遍历
       while ((ze = zipInputStream.getNextEntry()) != null) {
     
           System.out.println("文件名:" + ze.getName() + " 文件大小:" + ze.getSize() + " bytes");
           System.out.println("文件内容:");
     
           //读取
           BufferedReader br = new BufferedReader(new InputStreamReader(zipInputStream,Charset.forName("GBK")));
     
           String line;
     
           //内容不为空,输出
           while ((line = br.readLine()) != null) {
               System.out.println(line);
           }
       }
     
       //一定记得关闭流
       zipInputStream.closeEntry();
       input.close();
    }
    

    控制台输出:

    文件名:文件1.txt 文件大小:25 bytes
    文件内容:
    213123
    edqfdqf
    er2523
    文件名:文件2.txt 文件大小:14 bytes
    文件内容:
    rfq
    e
    fqefer
    

    我真实使用场景是在读取华为云对象存储服务中Bucket中指定.ZIP文件中包含的全部文件内容,代码如下:

    华为云官方文档中给的示例并不能满足我们下载.ZIP文件,所以有需要的朋友可以参考。

    public static void main(String[] args) throws IOException {
     
            //华为云对象存储认证对象
            final ObsClient obsClient = new ObsClient(ak, sk, endPoint);
            //读取对象存储中指定Bucket中的指定文件(test123为Bucket名称、File.zip为文件名称)
            ObsObject obsObject = obsClient.getObject("test23", "File.zip");
            InputStream input = obsObject.getObjectContent();
     
            System.out.println("Object content:");
            ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(input));
     
            //定义ZipEntry,避免由于重复调用zipInputStream.getNextEntry造成的不必要的问题
            ZipEntry ze = null;
            while ((ze = zipInputStream.getNextEntry()) != null) {
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(zipInputStream));
                    String line;
                    while ((line = bufferedReader.readLine()) != null) {
                        System.out.println(line);
                    }
            }
            //一定记得关闭流
            zipInputStream.closeEntry();
            input.close();
        }
    

    读取数据成功

    推荐好文
    
    强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!
    
    分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!
    能挣钱的,开源 SpringBoot 商城系统,功能超全,超漂亮!
    
    
    
    
    展开全文
  • Java解压较大压缩包 注意引入的类,这里用到了apache的ant依赖 <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>1.9.7</...

    Java解压较大压缩包

    注意引入的类,这里用到了apache的ant依赖

            <dependency>
                <groupId>org.apache.ant</groupId>
                <artifactId>ant</artifactId>
                <version>1.9.7</version>
            </dependency>
    

    本次文章使用的是接近4个G大小的压缩包

    import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipFile;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.util.Enumeration;
    
    /**
     * @author PZ
     */
    public class Test {
    
        /**
         * zip文件解压
         *
         * @param inputFile   待解压文件夹/文件
         * @param destDirPath 解压路径
         */
        public static void zipUncompress(String inputFile, String destDirPath) throws Exception {
            //获取当前压缩文件
            File srcFile = new File(inputFile);
            // 判断源文件是否存在
            if (!srcFile.exists()) {
                throw new Exception(srcFile.getPath() + "所指文件不存在");
            }
            //创建压缩文件对象
            ZipFile zipFile = new ZipFile(srcFile);
            //开始解压
            Enumeration<?> entries = zipFile.getEntries();
            while (entries.hasMoreElements()) {
                ZipEntry entry = (ZipEntry) entries.nextElement();
                // 如果是文件夹,就创建个文件夹
                if (entry.isDirectory()) {
                    String dirPath = destDirPath + "/" + entry.getName();
                    srcFile.mkdirs();
                } else {
                    // 如果是文件,就先创建一个文件,然后用io流把内容copy过去
                    File targetFile = new File(destDirPath + "/" + entry.getName());
                    // 保证这个文件的父文件夹必须要存在
                    if (!targetFile.getParentFile().exists()) {
                        targetFile.getParentFile().mkdirs();
                    }
                    targetFile.createNewFile();
                    // 将压缩文件内容写入到这个文件中
                    InputStream is = zipFile.getInputStream(entry);
                    FileOutputStream fos = new FileOutputStream(targetFile);
                    int len;
                    byte[] buf = new byte[1024];
                    while ((len = is.read(buf)) != -1) {
                        fos.write(buf, 0, len);
                    }
                    // 关流顺序,先打开的后关闭
                    fos.close();
                    is.close();
                }
            }
        }
    
        public static void main(String[] args) {
            try {
                long start = System.currentTimeMillis();
                zipUncompress("D:\\pz.zip", "D:\\");
                long end = System.currentTimeMillis();
                System.out.println((end - start) / 1000);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    
    

    程序解压所需时间 : 80s左右
    在这里插入图片描述

    展开全文
  • 概要【发布于2019年09月27日,由UnCutData数据恢复】我的压缩包解压后文件丢失了,能恢复吗?如果您从互联网上下载了许多程序和文件,可能会遇到很多压缩文件,而压缩包是压缩文件或压缩文件夹的载体,将压缩包进行...
  • 压缩包文件的解压

    2021-09-06 11:20:57
    压缩文件的解压码是一种打开密码,想要解压文件就必须输入解压码才能成功解压文件,如果不知道解压码,可以通过破解软件找回正确的密码。比如奥凯丰 压缩包解密大师 添加压缩包(支持zip、rar、7z压缩包)到软件中...
  • Java递归解压zip压缩包

    2021-11-19 17:39:57
    使用递归的方式进行解压解压后得到的目录结构和压缩包目录结构完全一致,非常好用! package com.zhh.api.util; import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.FileOutputStream; ...
  • #说明:解压tar.gz包并对压缩包内每个单独的文件夹进行压缩并放在指定目录下 #参数说明:1.localpath 压缩包文件路径 # 2.imagepath 单个文件夹压缩后的存放路径 # 3.trandt 当日的处理时间 # 4.filelist 当日生成的...
  • 压缩包解压密码怎么破

    千次阅读 2021-08-04 10:34:37
    从网上下载的资源大多数都是以压缩包形式被下载下来,我们需要通过解压压缩包拿到我们想要的文件,但是有时候可能会遇到解压压缩包的时候需要密码的情况,那压缩包解压秘密该怎么破解呢?如果文件资源对你来说很重要...
  • public String readZipFile(String file) throws Exception {ZipFile zipFile = null;ZipInputStream zin = null;InputStream in = null;StringBuffer sbf = null;try {zipFile = new ZipFile(file);...
  • 1、选择自己需要的版本,本教程是mysql-5.7.29-winx64版本2、解压到自己需要安装的目录下3、配置环境变量,配备到path目录中4、在MySQL的安装目录下创建my.ini文件,内容如下:[mysqld]# 设置3306端口port=3306# ...
  • 在做项目的时候,需要将上传的压缩包进行解压,不难想象,这样的功能我在没接触php之前还真没想过,php有这能力?于是我在网上找了些资料,并且还看过关于解压的视频,视频教程地址:...
  • 找回压缩包解压密码

    2021-10-19 10:51:00
    压缩包设置了加密,一般只能通过软件算法将密码找回来,不能绕过解压密码直接解压文件,如果需要找回压缩包密码,可以用软件来找回。 工具: 【压缩包解密大师】快速找回密码_轻松移除使用限制-奥凯丰okfone ....
  • 加密的压缩包文件如何解压

    千次阅读 2021-08-30 11:56:54
    如果压缩包带有打开密码,在不知道密码的情况下,是没有办法避免打开密码进行解压的,所以只有将打开密码找到,才能解压文件。找到压缩包密码也有很多途径,比如找设置密码的人、或者是输入现在网站的网址、一些常见...
  • Linux 下解压rar压缩包

    2021-05-17 10:37:57
    压缩和解压用法 压缩:rar a [不含.rar后缀的压缩包名字] [需要压缩的文件或者文件夹] 解压:rar x [rar的压缩包] 3.解压例子 #压缩 [root@iZf8ze76gcpdjr5dtx1l53Z ~]# rar a tmp.rar /tmp #解压 [root@iZf8ze76...
  • charset=utf-8'); $filename = 'test_zip.zip'; $path = './test_zip.zip';... } 以上这篇php 解压zip压缩包内容到指定目录的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持聚米学院。
  • 解压有密码的压缩包

    2021-08-17 09:46:15
    压缩包有打开密码,需要输入密码才能打开压缩包文件,那么该如何解压有打开密码的压缩包呢? 如果压缩包文件对自己很重要的话,可以考虑使用奥凯丰 压缩包解密大师,尝试找回正确的密码 ... 打开软件,将压缩包添加到...
  • 我们在使用云服务器的时候,压缩命令是常用的...于是我们会常用到将压缩包上传或者打包之后下载到本地管理或者其他应用。比如我们常见的压缩包格式有.ZIP、.TAR.GZ、.TAR、.TAR.BZ2等等格式。不同的后缀格式,我们使...
  • zip格式的压缩包解压的时候发现带有解压密码,想要解压文件就需要将正确的解压密码找到,才能够顺利解压文件。 使用软件,将压缩包(支持rar、zip、7z格式)添加到软件中,选择一种方法,点击【下一步】即可 ...
  • package com.nonecity.sy.common.utils; import fr.opensagres.xdocreport.core.io.IOUtils; import lombok.Data; import net.lingala.zip4j.ZipFile; import net.sf.sevenzipjbinding.*; import ...
  • 1,Python 解压压缩包至文件夹 import zipfile with zipfile.ZipFile(path_to_zip_file, 'r') as zip_ref: zip_ref.extractall(directory_to_extract_to) 2,Python 把整个文件夹打包至压缩包 import os import ...
  • uniapp微信小程序解压压缩包文件 解决:微信自带方法解压压缩包出现中文乱码问题 描述: 微信提供的unzip解压压缩包函数(18年到21年了, 还没改这个问题…) 出现中文乱码问题 , 遂改用jszip解压文件 在此记录一下本人小...
  • 有密码的压缩包如何解压

    千次阅读 2021-09-08 11:15:17
    如果你遇到了带有打开密码的压缩包,想要成功解压文件的话,就必须知道正确的密码才行,因为这类密码是没有办法绕过打开文件的,用奥凯丰 压缩包解密大师尝试将正确的打开密码找到。 ... 将压缩包(支持rar、zip、7z...
  • 压缩包资源解压时需要密码

    千次阅读 2021-08-02 14:56:55
    网上下载的文件大多数以压缩包形式被下载下来的,在解压压缩包的过程中有时候还需要输入密码的情况。一般情况下,如果是下载平台下载的,应该在压缩包所在文件夹里面会告知密码的,如果是个人链接下载的,可以联系他...
  • 压缩包忘记密码怎么解压

    千次阅读 2021-08-03 12:12:09
    压缩文件的时候自己设置了加密密码,时间久了可能就忘记了,当再次进行解压的时候发现需要输入密码的时候却...把压缩包文件添加到软件中,选择找回方法进行破解 如果你的压缩包格式是rar、zip、7z,都支持破解 ...
  • 对于这个功能,如果频繁的解压压缩包,在性能上多少有些损耗,且解压文件,会产生大量中间文件,不适合后续管理。特别是现在都是基于容器化部署,如果文件操作处理不当,导致删除失败,将很快打满容器磁盘容量,引起...
  • WEB前端解压ZIP压缩包web前端解压zip文件有什么用:只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说;如果前端的代码很多, 而且包含大副的图片,...
  • 在使用Windows 10工作时会碰到各式各样的问题,比如无线网络总是掉线、显示默认网关不可用。那么如何排除故障呢?... 无线网络总是掉线,显示默认网关不可用怎么办 手机如何解压压缩包 如何解压百度云压缩包
  • 压缩包带有打开密码,需要输入正确的密码才能成功解压文件。如果不知道密码还想要解压文件的话,可以用奥凯丰 压缩包解密大师尝试找到正确的解压密码。然后再解压文件即可。 【压缩包解密大师】快速找回密码_轻松...
  • iOS解压ZIP压缩包

    2021-06-04 01:30:22
    步骤:二:导入头文件#import "SSZipArchive.h"三:获取zip压缩包文件路径获取文件的方式方法一:NSString* filePath = [[NSBundle mainBundle] pathForResource:@"ZipName" ofType:@"zip"];ZipName:zip文件名zip:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 227,610
精华内容 91,044
关键字:

压缩包里的压缩包怎么解压