vue3导入文件夹、导入文件、导出zip、导出

这篇具有很好参考价值的文章主要介绍了vue3导入文件夹、导入文件、导出zip、导出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录一下之前项目用到的导入文件夹导入文件出现的一些注意的点,直接上代码

注意:在传相同的文件时,会发现无法触发change事件  

 nextTick(() => {
        planFileRef.value.value = "";
        planWordRef.value.value = "";
    });
<template>

<p>上传文件夹</p>
                    <input
                        ref="planFileRef"
                        class="show0"
                        type="file"
                        webkitdirectory
                        @change="selectFile"
                    />
<p>上传文件</p>
                    <input
                        ref="planWordRef"
                        type="file"
                        class="show0"
                        multiple
                        @change="selectWord"
                    />
</template>

<script setup>

import { ref } from "vue";
let planFileRef = ref();
let planWordRef = ref();

// 文件夹导入
const selectFile = () => {
    let project = store.state.project;     //给后端传的,可有可无
    var files = planFileRef.value.files;
    var data = new FormData();
    // 创建一个表单数据
    //文件夹导入按照 特定开头和结尾导入
    let regexArr = [
        /^rascn.*dat$/,
        /^rlight.*dat$/,
        /^rpimp.*xml$/,
        /^rppka.*xml$/,
        /^rpppk.*xml$/,
        /^rptrk.*xml$/,
        /^rsbeo.*dat$/,
        /^rsps.*dat$/,
    ];

    for (let i = 0; i < files.length; i++) {
        regexArr.forEach((item) => {
            if (item.test(files[i].name)) {
                data.append("file", files[i]);
            }
        });
    }
    data.append("projId", project.id);
    importApi(data);
};

// 文件导入
const selectWord = () => {
    let project = store.state.project;    //给后端传的,可有可无
    var files = planWordRef.value.files;

    const formData = new FormData();
    // 创建一个表单数据
    for (let i = 0; i < files.length; i++) {
        let a = files[i];
        console.log(a);
        formData.append("file", a);
    }
    formData.append("projId", project.id);
    importApi(formData);
};

//请求
const importApi = (formData) => {
    $http
        .post("/project/file", formData, {
            headers: {
                "Referrer-Policy": "unsafe-url",
                "Content-Type": "multipart/form-data",
            },
        })
        .then((res) => {
            if (res.code == 1) {
         
        })
};

</script>

 前端导出zip压缩包

我就用了最原始的方法axios 导出zip   因为之前也没有这样的需求

遇到过一个小问题就是,我的项目在config.js中判断了是不是开发环境还是生产环境,但我实际中

开发测试是没有问题的,打包给后端生产环境下,就会导出zip有问题,这时候查看是config,js还是开发环境下的api  所以我在里面就多加了一个一模一样的判断,这也是最笨的方法

import axios from "axios";

//导出工程
const exportProj = () => {
    let project = store.state.project;  

    //判断生产环境和开发环境

    let urlApi = "";
    if (process.env.NODE_ENV == "development") {
        //开发环境
        urlApi = baseUrl + `/project/export/${project.id}`;
    } else if (process.env.NODE_ENV == "production") {
        //生产环境
        urlApi = `/project/export/${project.id}`;
    }

    axios({
        // 用axios发送post请求
        method: "get",
        url: urlApi, // 请求地址
        data: {
            data: {},
        },
        responseType: "blob", // 表明返回服务器返回的数据类型
        headers: {
            "Content-Type": "application/json; application/octet-stream",
        },
    })
        .then((res) => {
            let blob = new Blob([res.data], { type: "application/zip" });
            // 设置下载的内容以及格式,zip文件必须设置type: "application/zip"
            const url = window.URL.createObjectURL(blob); // 设置路径
            const link = window.document.createElement("a"); // 创建a标签
            link.href = url;
            link.download = pdfData.title + `.zip`; // 设置文件名
            link.style.display = "none";
            link.click();
            URL.revokeObjectURL(url); // 释放内存
            loading.close();
            ElMessage({
                message: "导出成功",
                type: "success",
            });
        })
        .catch(function (error) {
            console.log(error);
            loading.close();
        });
};

导出dat格式(这个简单无需多说)文章来源地址https://www.toymoban.com/news/detail-828302.html

const downloadDat = () => {
    //data是文件流
    let project = store.state.project;
    let url =
        window.location.origin +
        baseUrl +
        `/event/download/dat/${project.id}?&title=${pdfData.title}&projId=${project.id}`;
    console.log(url);
    let fileName = pdfData.title + ".dat"; //文件名称
    const a = document.createElement("a");
    a.href = url;
    a.download = fileName;
    a.style.display = "none";
    document.body.appendChild(a);
    a.click();
    URL.revokeObjectURL(a.href);
    document.body.removeChild(a);
};

到了这里,关于vue3导入文件夹、导入文件、导出zip、导出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt 实现压缩文件、文件夹和解压缩操作zip

    通过Qt自带的库来实现,使用多线程方式,通过信号和槽来触发压缩与解压缩,并将压缩和解压缩结果回传过来。 使用的类: 1、在.pro文件中添加模块gui-private 若未cmake工程,需要在CMakeList.txt中添加 待验证: 1、中文路径,文件名含有中文 2、隐藏文件夹,.dir和…dir,例如:

    2024年02月14日
    浏览(45)
  • java将指定文件夹按照文件目录压缩为zip压缩包

    将指定的压缩包作为流发送给浏览器 下面粘贴一些没有用的东西 ,是我自已业务的逻辑,,主要逻辑是根据传入文件不同 判断将压缩包发送给浏览器 还是将xls模板发送给浏览器

    2024年02月16日
    浏览(43)
  • vue3+vite+ts项目搭建之后,vscode文件夹下红色波浪线问题

            搭建完vue3+vite+ts项目之后,用vscode打开项目,发现 .vue 文件和 main.ts 文件夹下都有红色破浪线(如下图所示)。几番周折终于解决了这个问题。 1. 解决.ts文件报错 报错原因:ts不识别.vue后缀的文件。 解决方式:创建脚手架的时候,项目的根目录下会生成一个en

    2024年02月04日
    浏览(53)
  • Java实现打包压缩文件或文件夹生成zip以实现多文件批量下载

    有时候在系统中需要一次性下载多个文件,但逐个下载文件比较麻烦。这时候,最好的解决办法是将所有文件打包成一个压缩文件,然后下载这个压缩文件,这样就可以一次性获取所有所需的文件了。 下面是一个名为CompressUtil的工具类的代码,它提供了一些方法来处理文件压

    2024年02月06日
    浏览(58)
  • 【Java 基础篇】Java Zip压缩:简化文件和文件夹的压缩操作

    在Java开发中,经常会遇到需要对文件和文件夹进行压缩和解压缩的需求。Java提供了Zip压缩库,使我们能够轻松地进行文件和文件夹的压缩操作。本文将详细介绍Java中的Zip压缩功能,并提供示例代码来演示其用法。 Zip压缩是一种常见的文件压缩格式,它将多个文件和文件夹打

    2024年02月15日
    浏览(79)
  • [python]批量解压文件夹下所有压缩包(rar、zip、7z)

            在文件夹作用包含许多压缩包的时候,解压起来就很费时费力,尤其是在文件夹还存在嵌套的情况下,解压起来就更麻烦了。Franpper今天给大家带来递归遍历指定路径下的所有文件和文件夹,批量解压所有压缩包的方法,帮大家一键解压。         常见的压缩包格

    2024年02月09日
    浏览(63)
  • Java利用Apache compress包实现文件夹压缩成Zip包

    Apache common提供了很多实用的工具包,下面就说一下如何用compress包来压缩文件夹。先引入compress,io和lang3这3个工具包: 这个方法实现了将文件夹下所有的文件压缩成zip包,并输出到文件流中,可以直接写入到文件或提供给前端下载,工具类如下: 执行main函数跑测试用例,发

    2024年01月20日
    浏览(44)
  • JavaScript实现访问本地文件夹

    这个功能放在之前是不可能实现的,因为考虑到用户的隐私,但是最近有一个新的api可以做到这一点。下面来进行一个简单的功能实现。 我们调用showDirectoryPicker这个函数就可以实现一个选择文件夹的功能。 options 可选 选项对象,包含以下属性: id 通过指定 ID,浏览器能够记

    2024年02月04日
    浏览(49)
  • JavaScript 打开本地文件夹的N种方法

    方法一 通过ActiveXObject对象 比如打开C盘: 方法二 设置一个不可见的input标签,通过input上面的webkitdirectory 属性打开本地文件,我写的是vue3用法: 方法三 设置一个不可见的input标签,通过input上面的multiple 属性打开本地文件,我写的是vue3用法:这个属性与webkitdirectory 的具体

    2024年02月15日
    浏览(39)
  • git 怎么导入本地仓库-将本地文件夹添加到Git仓库

    1、(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 2、把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加文件夹下的所有文件 3、用命令 git commit告诉Git,把文件提交到仓库。引号内为提交说明 4、关

    2023年04月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包