精华内容
下载资源
问答
  • Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...
  • springboot从阿里云OSS批量导出图片并下载压缩包文件 1.添加OSS依赖 <!-- oss --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</...

    springboot从阿里云OSS批量导出图片并下载压缩包文件

    1.添加OSS依赖
    		<!-- oss -->
    		<dependency>
    			<groupId>com.aliyun.oss</groupId>
    			<artifactId>aliyun-sdk-oss</artifactId>
    			<version>2.8.3</version>
    		</dependency>
    
    2.业务需求从数据库取出OOS图片路径数组,将其从OSS取出,并放入压缩包后下载。

    首先准备图片路径数组,根据自己业务需求从数据库中获取

    List<String> imagePaths = new ArrayList<>();
    

    再准备下载的文件名和下载的压缩包文件,调用封装好的工具类即可

    String zipName = 名字 + ".zip";
    try {
         // 创建临时文件
         File zipFile = File.createTempFile(名字, ".zip");
         // 下载文件为zip压缩包
         OSSToZipUtils.getZipFromOSSByPaths(zipName, zipFile, request, response, imagePaths);
     } catch (Exception e) {
         e.printStackTrace();
         return false;
     }
    

    其中 OSSToZipUtils.getZipFromOSSByPaths(zipName, zipFile, request, response, imagePaths) 定义好的工具类方法。在处理图片路径的时候有几点注意:①图片路径最开始应该是OSS的bucket名字,不需要http:xxx,只需要从你的OSS的bucket开始即可,如:bucket/文件夹…/xxx.png。②若存入数据库时中文没有处理,取出时路径中存在被解析乱码的符号时,使用URLDecoder.decoder方法进行解码:URLDecoder.decode(imagePath, “utf-8”);不然会报错:找不到key或不合法的key异常。

    3.getZipFromOSSByPaths(zipName, zipFile, request, response, imagePaths)方法

    详细代码和解析如下,传入正确的imagePath,并把连接OSS的参数endpoint,appkey,appscecret改成自己的即可使用

    /**
    	 * Title: getZipFromOSSByPaths
    	 * Description: 从OSS批量下载文件存入压缩包, 分别传入压缩包名(zipName),临时压缩包文件(zipFile),
    	 * 				http请求request,http请求response,以及需要下载的文件的地址(imagePths)
    	 * Date: 2019年7月29日
    	 * boolean
    	 */
    	public static void getZipFromOSSByPaths(String zipName, File zipFile, HttpServletRequest request,
    			HttpServletResponse response, List<String> paths) throws Exception {
    		
    		OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID,
    				ACCESS_KEY_SECRET);
    
    		FileOutputStream fos = new FileOutputStream(zipFile);
    
    		// 作用是为任何OutputStream产生校验和
    		// 第一个参数是制定产生校验和的输出流,第二个参数是指定Checksum的类型 (Adler32(较快)和CRC32两种)
    		CheckedOutputStream cos = new CheckedOutputStream(fos, new Adler32());
    
    		// 用于将数据压缩成zip文件格式
    		ZipOutputStream zos = new ZipOutputStream(cos);
    
    		// 循环根据路径从OSS获得对象,存入临时文件zip中
    		for (String path : paths) {
    
    			// 根据path 和 bucket 从OSS获取对象
    			OSSObject ossObject = ossClient.getObject(BUCKET, path);
    
    			InputStream is = ossObject.getObjectContent();
    
    			// 将文件放入zip中,并命名不能重复
    			zos.putNextEntry(new ZipEntry(path));
    
    			// 向压缩文件中写数据
    			int len = 0;
    			while ((len = is.read()) != -1) {
    				zos.write(len);
    			}
    			is.close();
    			// 当前文件写完,关闭
    			zos.closeEntry();
    		}
    		zos.close();
    
    		String header = request.getHeader("User-Agent").toUpperCase();
    		if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {
    			// IE下载文件名空格变+号问题
    			zipName = URLEncoder.encode(zipName, "utf-8");
    			zipName = zipName.replace("+", "%20");
    		} else {
    			zipName = new String(zipName.getBytes(), "ISO8859-1");
    		}
    
    		// 设置响应类型,以附件形式下载文件
    		response.reset();
    		response.setContentType("text/plain");
    		response.setContentType("application/octet-stream; charset=utf-8");
    		response.setHeader("Location", zipName);
    		response.setHeader("Cache-Control", "max-age=0");
    		response.setHeader("Content-Disposition", "attachment; filename=" + zipName);
    
    		// 下载流封装
    		FileInputStream fis = new FileInputStream(zipFile);
    		BufferedInputStream bis = new BufferedInputStream(fis);
    		BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
    
    		// 下载zip文件
    		FileCopyUtils.copy(bis, bos);
    
    		// 关闭流
    		fis.close();
    		bis.close();
    		bos.close();
    
    		ossClient.shutdown();
    		// 删除临时zip文件
    		zipFile.delete();
    
    	}
    
    展开全文
  • 下载<a id="download" href="javascript:void(-1)">咨询电话接听明细模板</a>,填写导入</div> <input type="file" name="file_upload" id="file_upload"/> </div> js代码 $("#...

    我的页面

    <div id="page-content">
        <div>下载<a  id="download" href="javascript:void(-1)">咨询电话接听明细模板</a>,填写后导入</div>
        <input type="file" name="file_upload" id="file_upload"/>
    </div>
    

    js代码

      $("#download").click(function(){
    
                    window.open( window.location.protocol+"//"+window.location.host+"/resourcemngctrl/pages/taxservhotline_eva/detail.xlsx", "_blank");
    
                });
    

    web.xml

    <mime-mapping>
    		<extension>xlsx</extension>
    		<mime-type>application/msexcel</mime-type>
    	</mime-mapping>
    
    展开全文
  • 记项目实现需求,转react实现:根据获取的数据,转化成图片然后打包压缩自动下载 根据需求,分析需求,获得基本的实现步骤: 获取数据 把数据转成一个个div,然后转成 canvas(因为canvas是通过指定的 DOM 来生成...

    记项目实现需求,转react实现:根据获取的数据,转化成图片然后打包压缩后自动下载

    根据需求,分析需求,获得基本的实现步骤:

    1. 获取数据
    2. 把数据转成一个个div,然后转成 canvas(因为canvas是通过指定的 DOM 来生成的,所以我会先转成div)
    3. 通过 html2canvas 生成 base64 图片
    4. 通过 jszip 把所有 base64 图片 添加到实例中,生成zip 文件, 生成 a 链接,模拟点击下载链接进行自动下载

    接下来,就看一下以上的步骤应该如何通过 react 来实现。

    1. 首先是获取数据,获取数据比较简单,就是直接请求数据然后记录下来,假设现在获取到的数据是(以下数据都是自己在网上找回来的假数据)
    const dataJSON = [
      {
        id: "1",
        cnName: "水元素",
        jpName: "ウォーター·エレメント",
        enName: "Water Element",
        cardType: "通常怪兽",
        race: "水",
        attribute: "水",
        stars: "3",
        ATK: "900",
        DEF: "700",
        rarity: "平卡N",
        description: "住在水里的精灵。将四周用雾包围妨碍敌人的视线。",
      },
      {
        id: "2",
        cnName: "元素恶魔",
        jpName: "エレメント·デビル",
        enName: "Element Doom",
        cardType: "效果怪兽",
        race: "恶魔",
        attribute: "暗",
        stars: "4",
        ATK: "1500",
        DEF: "1200",
        rarity: "平卡N",
        description: "这只怪兽在场上有特定的属性的怪兽存在的场合,得到以下的效果。",
      },
      {
        id: "3",
        cnName: "元素恐龙",
        jpName: "エレメント·ザウルス",
        enName: "Element Saurus",
        cardType: "效果怪兽",
        race: "恐龙",
        attribute: "暗",
        stars: "4",
        ATK: "1500",
        DEF: "1200",
        rarity: "平卡N",
        description: "这只怪兽在场上有特定属性的怪兽存在的场合,得到以下的效果。",
      },
      {
        id: "4",
        cnName: "元素爆发",
        jpName: "エレメンタルバースト",
        enName: "Elemental Burst",
        cardType: "通常陷阱",
        rarity: "平卡N",
        description:
          "自己场上存在的风·水·炎·地属性的怪兽各1只作为祭品才能发动。对方场上存在的卡全部破坏。",
      },
    ];
    
    1. react 更新数据列表,显示指定的 DOM 元素,子组件通过父组件的数据更新,激活生成 canvas 的方法
    this.setState({
    	batchData: dataJSON,
    });
    // 激活生成 canvas 的方法
    componentDidUpdate() {
    	this.batchHtml2canvas && this.batchHtml2canvas();
    }
    
    1. 通过 html2canvas 生成 base64 图片
      遍历数据数组中的每条数据,查找对应的 DOM 来生成 canvas,我的容器是通过数据的 id 来命名的
    batchDataJSON.map((card) => {
          html2canvas(document.getElementById(`card_${card.id}`), {
            backgroundColor: "transparent",
          }).then((canvas) => {
    	    // 重点之一,获取 canvas 的 base64
            const base64Data = canvas
              .toDataURL("image/jpeg")
              // 重点之二,必须把base64的头给去掉才能转成图片,不然后面使用jszip插件的时候,插件会检测到该数据是一个文件路径而导致报错
              .replace("data:image/jpeg;base64,", "");
              // 把数据的指定元素保存为到时候生成图片文件的文件名
            const _name = card.cnName;
            base64Arr.push({ name: _name, base64: base64Data });
            // 当数据保存完之后,开始执行打包压缩方法
            if (base64Arr.length === batchDataJSON.length) {
              this.data2JSzip(base64Arr);
            }
          });
        });
    
    1. 通过 jszip 把所有 base64 图片 添加到实例中,生成 zip 文件
    data2JSzip(base64Arr) {
        // 初始化事件
        var zip = new JSZip();
        // 遍历数据
        base64Arr.map(function (obj) {
          // 往zip包里面不断塞jpg文件,使用上面保存的 name 作为文件名
          // 后面的 { base64: true } 记得设置,意思为允许 base64 的数据
          zip.file( `${obj.name}.jpg`, obj.base64, { base64: true });
        });
        zip
          .generateAsync({
            type: "blob",
          })
          .then(function (content) {
            // 下载后的压缩包文件名
            var filename = `批量下载.zip`;
            // 创建隐藏的可下载链接
            var eleLink = document.createElement("a");
            eleLink.download = filename;
            eleLink.style.display = "none";
            // 下载内容转变成blob地址
            eleLink.href = URL.createObjectURL(content);
            // 往 body 加入 a 标签
            document.body.appendChild(eleLink);
            // 触发点击
            eleLink.click();
            // 然后移除
            document.body.removeChild(eleLink);
          });
      }
    

    功能参考:
    张鑫旭:纯前端JS zip打包文件并下载

    插件链接:
    html2canvas
    jszip

    参考例子:DEMO || 觉得有用的话,欢迎点个star

    以上只是个人在项目需求中实现的一个功能而做的一个简单demo。如果同学们在项目中有这个需求,当然会有不一样的其他要求(例如样式,需求),同学们根据自己的需求进行修改大致上应该没什么问题。

    如果有什么好的看法可以适当的提出来一起共同学习。

    当前上面的这两个插件玩法不止这么简单,还有其他更多的玩法,有兴趣的同学可以自己去进一步的了解学习。

    ----与君共勉----

    展开全文
  • aspnetcore vue 下载zip文件,压缩包打不开的问题记录 C#代码压缩传输zip文件 测试用: C#代码压缩传输zip文件 测试用: // POST api/ [HttpPost] public FileResult Post([FromBody] LogFileDownloadInputModel ...

    aspnetcore vue 下载zip文件,压缩包打不开的问题记录

    C#代码压缩传输zip文件

    测试用:

     // POST api/<LogFileDownloadController>
            [HttpPost]
            public FileResult Post([FromBody] LogFileDownloadInputModel value)
            {
                var uuidN = Guid.NewGuid().ToString("N");
                String basePath = AppContext.BaseDirectory;
                string folderPath = basePath + "FileTemp"+ uuidN;
                string sourceDisk = "L:\\";
                if (!Directory.Exists(folderPath))
                {
                    Directory.CreateDirectory(folderPath);
                }
                List<string> filelist = new List<string>();
                foreach (string relativepath in value.relativepaths)
                {
                    string fileAbsolutePath = sourceDisk + relativepath.Replace("/","\\");
                    if (System.IO.File.Exists(fileAbsolutePath))
                    {
                        System.IO.File.Copy(fileAbsolutePath, folderPath + "\\" +QstringFunction.SubLastAfter(fileAbsolutePath,"\\"));
                        filelist.Add(folderPath + "//" + QstringFunction.SubLastAfter(fileAbsolutePath, "\\"));
                    }
                    else
                    {
                    }
                }
    
                if (value.relativepaths.Count<1)
                {
                    return null;
                }
                bool isSuc = YG._CommonFunctions.ZipHelper.CompressMulti(filelist, folderPath+"\\"+ uuidN + ".zip", true,false);
                if (System.IO.File.Exists(folderPath + "\\" + uuidN + ".zip"))
                {
                    var _zip= folderPath + "\\" + uuidN + ".zip";
                    var stream = System.IO.File.OpenRead(_zip);
                    string fileExt = Path.GetExtension(uuidN + ".zip");
                    var provider = new FileExtensionContentTypeProvider();
                    var memi = provider.Mappings[fileExt];
                    return File(stream, memi, Path.GetFileName(_zip));
                }
                else
                {
                    return null;
                }
            }
    

    如果zip压缩包打不开,显示损坏,需要在下面加上

    responseType: 'blob',
    

    在这里插入图片描述

    展开全文
  • 需求:单独下载:先将文章转为word,与附件同时下载,下载按照该文件的分类,创建相应的文件夹,(如果有多个顶级文件夹)最后将同类顶级文件夹共同存放在一个根文件夹下,再压缩成一个压缩包下载 批量下载:...
  • [root@ conf]# pwd /alidata/server/nginx/conf [root@ conf]# vi mime.types application/vnd.android.package-archive apk; #增加加这一条  位置大概: application/x-redhat-package-manager ... ...
  • String module = "Order/QuoteImg"; downForZip(req,response,keyList,module,"image.zip"); /** * 批量下载为zip * @param req HttpServletRequest ... * @param fileName 下载出来的zip文件名 如:image.zip
  • 幻灯片模板设计采用土黄色的渐变,简洁的设计风格。 关键词:黄色PPT背景色,简洁幻灯片模板,渐变、纯色PowerPoint模板下载,.PPT格式
  • Linux 命令面试题

    万次阅读 多人点赞 2019-07-24 09:40:04
    pwck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的用户 grpck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的群组 newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组 文件的权限 -...
  • (浏览器下载同一个zip包有211kb) 后来我又百度许久,网上都说需要加 ob_clean(); flush(); 以便把缓存区的数据,制刷到浏览器,但我代码里也加了 后来我去百度了下php的缓存机制(以下这段,摘至网上) ...
  • 解决apk文件下载后变zip

    千次阅读 2017-11-06 22:53:00
    早上研发的同事说刚上的android下载文件变成zip了,导致用户手机无法安装。现解决方法如下: 1)nginx服务器 在Nginx安装目录下的conf/mime.types文件的对应位置,加上以下一行: application/vnd.android.package-...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...
  • CTF中压缩包的思路

    2020-03-13 22:44:57
    字典,还以之前的ISCC 2017 Basic-07举例,从图片中分离出一个加密的zip压缩包,爆破无果考虑字典攻击(可从网上下载字典,但大多数题目需要自己构造字典,文末的网盘连接里提供了常见的字典) 3. 3.字典攻击的...
  • linux常用命令

    千次阅读 多人点赞 2016-12-22 11:24:58
    rar ajpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux zipjpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux 解压 tar -xvffile.tar //解压 tar包 tar -xzvffile.tar.gz //解压tar.gz ...
  • 在azure云存储中 上传apk文件 使用ie下载 变成zip压缩包 解决方法 编辑 blob 属性和元数据 修改 内容类型 为 ...apk文件使用ie 下载后 变为zip后缀 压缩包 如果你的下载服务器为Nginx服务器,那么,在Ngin...
  • 本需求是自己负责的一个生产系统上,有大量以zip和rar结尾的压缩文件散落在文件系统的各个文件夹,先在需要把压缩包里包含某一个特定文件(如tftpd32.exe或Tftpd32.exe,版本较旧),全都替换成比较新的tftpd32.exe...
  • 我们在工作和学习中都会...1、打开压缩图网站,点击选择文件,上传你需要压缩的文件压缩包(注:压缩包格式要是zip格式。) 2、选择压缩等级,压缩等级越小压缩的文件体积越小,选择好以后点击开始上传并压缩。 3
  • Linux常用命令全集

    千次阅读 多人点赞 2013-01-22 13:40:35
    引言:最近被要求写shell备份数据库,个人觉得Linux的操作还是极为重要的,所以转载了别人比较好的文章,留作用! Linux常用命令全集 http://www.jb51.net/linux/ 系统信息 arch 显示机器的处理器架构(1) ...
  • 但数据全是压缩包格式的,解压内存占用又会大。所以需要直接从压缩包中读取数据。 基于R语言 library(R.utils) library(stringr) library(raster) library(rasterVis) # download and read the dat
  • jar的使用方法,教你如何使用jar压缩一些文件。只需配置好jdk就可以使用jar压缩其他文件。
  • Flash

    千次阅读 2013-06-01 14:22:20
    这个播放器非常小,只需花一点点时间下载,对于在体验网页上的多媒体效果是个很好的开始。  Flash也支持高品质的mp3音频流、文字输入字段、交互式接口等等很多东西。这个最新版本可以观看所有的flash格式。若...
  • 从后台下载zip文件

    2020-09-02 15:23:07
    从后端下载zip文件压缩包vue文件处理后台传回zip数据流 vue文件处理 下面展示对后台传回的 数据流的处理。 Vue.prototype.$exportClick = function(res, name = "下载.zip") { const content = res; const blob = ...
  • vue前端解压zip包,判断压缩包内容

    千次阅读 2019-04-04 17:04:59
    1.下载jszip npm i jszip -S or npm install jszip 2.引入jszip import JsZip from 'jszip'; 3. <el-upload ref="elUpload" class="upload-demo" action="customiz...
  • ie浏览器下载rar文件,变成do文件

    千次阅读 2017-04-20 19:01:57
    使用ie浏览器下载页面上的rar文件,点击的使用迅雷下载,自动改为main.do文件,下载后打不开,使用过百度经验中的重新下载WinRAR,再次安装,添加关联文件rar方法,没有效果。 我的解决方法,将原下载页面换为360...
  • * 从阿里云下载文件 (以附件形式下载) 多个文件进行zip下载 第二种 * @param request * @param response */ @ResponseBody @RequestMapping(value = "/zipFilesDown", method = RequestMeth...
  • 本文用于多个文件批量下载,提供两种下载方式 (二者利弊自行考量) 1. 将文件文件全部下载到本地文件夹,之后将文件夹打包成zip最后输出到浏览器再删除文件夹跟zip文件利用本地磁盘作为过渡 2. 直接在代码中拿到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,576
精华内容 5,430
关键字:

压缩包下载后格式变了