vue+element ui 实现文件上传下载

这篇具有很好参考价值的文章主要介绍了vue+element ui 实现文件上传下载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.上传html代码:

<el-upload 
    ref="upload" 
    :limit="10" 
    accept=".jpg,.gif,.png,.jpeg,.txt,.pdf,.doc,.docx,.xls,.xlsx"
    name="files" 
    :multiple="true" 
    action 
    :headers="myToken" 
    :on-change="handleFileChange"
    :before-remove="handleFileRemove" 
    :auto-upload="false" 
    :file-list="upload.fileList">
    <el-button 
        slot="trigger" 
        size="small" 
        type="primary" 
        class="color">
        选取文件
    </el-button>
</el-upload>
<div>支持上传".jpg,.gif,.png,.jpeg,.txt,.pdf,.doc,.docx,.xls,.xlsx" 文件,最多上传10个</div>

2.api中需要携带的数据

//文件上传api
export const upload = (data, date, userNumber) => axios.post(`/file/upload?date=${date}&userNumber=${userNumber}`, data, { headers: { 'Content-Type': 'multipart/form-data', token: window.localStorage.getItem('token') } });
//文件下载api
export const download = (data) => axios.post("/file/download", data, { responseType: "blob" },);

3.上传js代码

export default {
    data() {
        return {
            upload: {
                fileList: [],
                fileName: []
            },
            myToken: {
                Authorization: localStorage.getItem("token"),
            },
            date: "",
            userNumber: "",
        }
    },
    methods: {
        // 将文件上传坐在form表单中时,出发添加校验成功后进行文件上传
        add(formName) {
            this.$refs[formName].validate(async (valid) => {
                if (valid) {
                     //需要的js代码
                    // 创建新的数据对象
                    let formData = new FormData();
                    // 将上传的文件放到数据对象中
                    this.upload.fileList.forEach(file => {
                        formData.append('file', file.raw);
                    });
                    var date1 = new Date()
                    this.data = date1.getFullYear() + "-" + (date1.getMonth() + 1) + "-" + date1.getDate()
                    this.userNumber = JSON.parse(decodeURIComponent(window.atob(localStorage.getItem("userNumber"))));
                        let res = await SuperviseSave(params)//上传表单内容
                        if (res.status == 200) {
                            try {
                                // 添加成功
                                let res = await upload(formData, this.data, this.userNumber)//上传文件
                                if (res.data == "上传成功") {
                                    this.close("addSuccess")
                                    this.success("数据添加成功")
                                }
                            } catch (err) {
                                if (err.data = "upload failed:新建 DOCX 文档.docx文件不能为空") {
                                    this.success(err.data)
                                }
                            }
                        }
                    } 
                } else {
                    return false;
                }
            });
        },
        // 上传发生变化钩子
        handleFileChange(file, fileList) {
            this.upload.fileList = fileList;
            const newListLength = new Set(fileList.map(item => item.name)).size;
            const listLength = fileList.length;
            if (listLength > newListLength) {
                this.success("文件名存在重复,可能会导致文件覆盖,请进行修改")
            }
        },
        // 删除之前钩子
        handleFileRemove(file, fileList) {
            this.upload.fileList = fileList;
        },
    },
}

下载html代码

<!-- 查看 -->
<template>
    <div class="government-display">
        <el-button type="info" class="region-btn-back" icon="el-icon-back" @click="back">
            返回
        </el-button>
        <div v-for="item in title" :key="item.prop" class="government-display-title">
            {{ item.title }}:
            <span> {{ msg[item.prop] }}</span>
        </div>
        <div>
            <div class="government-display-title">附件:</div>
            <div v-for="item in uploadPicture" >{{ item.fileName }}<span class="download" @click="downLoad(item.fileName, item.filePath)">点击下载</span></div>
        </div>
    </div>
</template>

下载js代码

data() {
        return {
            uploadPicture: [],
            filePath: ""
        }
    },
 methods: {
        //请求文件下载接口
        async downLoad(fileName, filePath) { 
            //请求下载接口
            let res =await download({
                filePath,    //文件存储路径
                fileName,    //文件名
            })
            //配置一下代码进行下载
            let url = window.URL.createObjectURL(new Blob([res.data]));
                    let link = document.createElement("a");
                    link.style.display = "none";
                    link.href = url;
                    link.setAttribute("download", fileName); //fileName下载后的文件名
                    document.body.appendChild(link);
                    link.click();
                     // 释放内存
                    window.URL.revokeObjectURL(link.href)
        }
    },
// 文件上传
export const upload = (data, date, userNumber) => axios.post(`/file/upload?date=${date}&userNumber=${userNumber}`, data, { headers: { 'Content-Type': 'multipart/form-data', token: window.localStorage.getItem('token') } });
// 文件上传
export const checkFiles = (data, date, userNumber) => axios.post(`/file/checkFiles?date=${date}&userNumber=${userNumber}`, data, { headers: { 'Content-Type': 'multipart/form-data', token: window.localStorage.getItem('token') } });
//文件下载
export const download = (data) => axios.post("/file/download", data, { responseType: "blob" },);

文章来源地址https://www.toymoban.com/news/detail-628378.html

到了这里,关于vue+element ui 实现文件上传下载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【java】java实现大文件的分片上传与下载(springboot+vue3)

    源码: https://gitee.com/gaode-8/big-file-upload 演示视频 https://www.bilibili.com/video/BV1CA411f7np/?vd_source=1fe29350b37642fa583f709b9ae44b35 对于超大文件上传我们可能遇到以下问题 • 大文件直接上传,占用过多内存,可能导致内存溢出甚至系统崩溃 • 受网络环境影响,可能导致传输中断,只能重

    2024年02月02日
    浏览(58)
  • SpringBoot+vue文件上传&下载&预览&大文件分片上传&文件上传进度

    SpringBoot+vue 大文件分片下载 Blob File spark-md5根据文件内容生成hash 大文件分片上传(批量并发,手动上传)vue组件封装-form组件 vue上传大文件/视频前后端(java)代码 springboot+vue自定义上传图片及视频 SpringBoot + VUE实现前台上传文件获取实时进度( 使用commons-fileupload设置上传监听

    2024年02月05日
    浏览(74)
  • SpringBoot整合hdfs,实现文件上传下载删除与批量删除,以及vue前端发送请求,实现前后端交互功能;

    部分工具类代码参考文章:https://blog.csdn.net/qq_27242695/article/details/119683823 前端实现效果 HDFSController HDFS FileInterface (文件接口) HDFS FileImplService (文件接口实现类) HDFSConfig(从yaml读取文件) HDFSUTils 前端vue代码:

    2024年02月16日
    浏览(79)
  • .net6Api后台+VUE3前端实现上传和下载文件全过程

    首先本文参考的是,感谢博主: net6WebApi上传下载文件_cduoa的博客-CSDN博客_webapi下载文件 在博主的基础上,增加了新的功能,代码中有注明,并且使用VUE3前端实现。 后端部分: 1.首先建立IFileService文件 2.建立FileService文件 3.增加FileController文件 4.Program文件中,进行配置和跨域

    2023年04月09日
    浏览(54)
  • Vue2-文件上传、下载场景功能

    在项目开发中,上传文件的应用场景非常的多,一般情况下,上传的接口都是由公司内部自己开发一套适用于任何场景都可以使用的接口,但是这意味着该接口所涉及到的工作量与技术点就非常的多,且不稳定。于是大公司选择了前者自己研发,小公司则选择了性价比更高的

    2024年02月07日
    浏览(49)
  • 文件上传下载系列——如何实现文件秒传

    🎃简介: 👻核心思想: MD5是什么? 实现步骤: 🎄实操: 1、java生成文件MD5码 2、javascript生成文件MD5码 ⛳️基于秒传的分片上传下载 上传: 下载: 🍢MD5存储位置 1、持久化到数据库中 2、存储到redis中 🎋总结         文件秒传是指在文件上传过程中,如果上传的文件

    2024年02月01日
    浏览(39)
  • 实现文件上传和下载

    文件上传的前端页面: multiple表示支持一次上传多个文件 上传单个文件的servlet代码: @MultipartConfig该注解表示这个servlet支持文件上传 支持一次上传多个文件的servlet代码实例: 展示文件列表: 下载文件的前端页面 下载文件的servlet:

    2024年02月08日
    浏览(43)
  • SpringMVC实现文件上传&下载(2)

    文件上传步骤 第一步:由于SpringMVC使用的是commons-fileupload实现,故将其组件引入项目中,这里用到的是commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar。 第二步:spring-mvx中配置MultipartResolver处理器。可在此加入对上传文件的属性限制。 第三步:在Controller的方法中添加MultipartFile参数。

    2024年03月09日
    浏览(58)
  • fastDFS实现文件上传与下载

    我们在做项目的时候经常会遇到文件的上传与下载。你们是怎么做的呢?现在有一个技术可以非常简单的实现这个功能——fastDFS FastDFS是一个分布式文件系统,使用FastDFS可以非常容易搭建一套高性能的文件服务器集群提供文件上传、下载服务。 它主要包含两个部分, Tracke

    2024年02月07日
    浏览(52)
  • React 实现文件分片上传和下载

    文件分片上传是一种将大文件分割成多个小片段进行上传的技术。它的原理是将大文件切割成固定大小的小块,然后逐个上传这些小块,最后在服务器端将这些小块合并成完整的文件。 文件分片上传的机制可以提高上传速度和稳定性。由于大文件的上传可能会受到网络不稳定

    2024年02月13日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包