前端vue+express实现文件的上传下载示例

我们来详细讲解一下“前端vue+express实现文件的上传下载示例”的完整攻略。

1. 准备工作

首先,我们需要安装node.js和npm,这两个东西是在建立一个web应用程序时必要的要素。安装好这两个以后,我们可以使用npm安装express和vue-cli。

# 安装express
npm install express --save

# 安装vue-cli
npm install -g vue-cli

2. 创建项目

接下来,我们可以使用vue-cli创建vue项目:

vue init webpack file-upload-download-demo

3. 在项目中添加依赖项

我们需要在项目中安装以下依赖项:

# 安装express
npm install express --save

# 安装express-fileupload
npm install express-fileupload --save

# 安装cors
npm install cors --save

4. 编写服务端代码

我们需要在项目中创建一个server文件夹,将服务端代码放在这里面。然后,在server文件夹中创建一个index.js文件,编写如下代码:

// 引入express和express-fileupload
const express = require('express');
const fileUpload = require('express-fileupload');
const cors = require('cors');

// 创建服务器
const app = express();

// 添加跨域支持
app.use(cors());

// 设置端口号
const port = 3000;

// 存储文件
app.use(fileUpload());

// 处理上传文件的请求
app.post('/upload', (req, res, next) => {
  let file = req.files.file;
  file.mv('./uploads/' + file.name, (err) => {
    if (err) {
      res.status(500).send(err);
    }
    else {
      res.status(200).send('文件上传成功');
    }
  });
});

// 处理下载文件的请求
app.get('/download/:fileName', (req, res) => {
  let fileName = req.params.fileName;
  res.download('./uploads/' + fileName, fileName, (err) => {
    if (err) {
      res.status(500).send(err);
    }
  });
});

// 启动服务
app.listen(port, () => {
  console.log(`服务已启动,监听端口 ${port}`);
});

5. 编写前端代码

Vue项目中,我们需要编写两个组件:一个用来处理上传文件,一个用来处理下载文件。这里分别说明。

5.1 上传文件的组件

在src/components/文件夹下,我们创建一个UploadFile.vue文件,内容如下:

<template>
  <div>
    <input type="file" @change="uploadFile"/>
  </div>
</template>

<script>
export default {
  methods: {
    uploadFile(event) {
      let formData = new FormData();
      formData.append('file', event.target.files[0]);
      this.$http.post('http://localhost:3000/upload', formData).then(response => {
        console.log(response.data);
      });
    }
  }
}
</script>

5.2 下载文件的组件

同样,在src/components/文件夹下,我们创建一个DownloadFile.vue文件,内容如下:

<template>
  <div>
    <select @change="downloadFile">
      <option v-for="file in fileList" :value="file">{{file}}</option>
    </select>
  </div>
</template>

<script>
export default {
  data() {
    return {
       fileList: [] 
    }
  },
  methods: {
    getFiles() {
      this.$http.get('http://localhost:3000/files').then(response => this.fileList = response.data);
    },
    downloadFile(event) {
      let fileName = event.target.value;
      this.$http.get('http://localhost:3000/download/' + fileName, {responseType: 'blob'}).then(response => {
        let url = window.URL.createObjectURL(new Blob([response.data]));
        let link = document.createElement('a');
        link.href = url;
        link.setAttribute('download', fileName);
        document.body.appendChild(link);
        link.click();
      });
    }
  },
  mounted() {
    this.getFiles();
  }
}
</script>

6. 运行应用程序

我们需要在vue项目和server文件夹中分别运行以下命令:

# 在vue项目中运行
npm run dev

# 在server文件夹中运行
node index.js

到这里,我们就可以在浏览器中通过localhost:8080访问应用程序。在UploadFile.vue中选择一个文件上传,然后在DownloadFile.vue中选择一个文件下载即可完成完整的文件上传、下载示例。

以上是利用Vue和Express实现文件上传下载的示例,由于篇幅限制,只说明了代码的基本逻辑。如果您有其他问题可以查看相关的官方文档:Vue.js官方文档Express官方文档以及express-fileupload的文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:前端vue+express实现文件的上传下载示例 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue vant使用ImagePreview实现预览图片

    一、Vue vant ImagePreview简介 Vue vant ImagePreview是一个基于vant组件库的vue插件,它的主要作用是在移动端实现图片的预览功能,在应用中使用非常广泛。在Vue vant中,ImagePreview是一种非常常见的组件,可以很方便地实现图片预览效果。 二、Vue vant ImagePreview实现预览图片的方法…

    Vue 2023年5月27日
    00
  • Vite+Electron快速构建VUE3桌面应用的实现

    下面我将为你详细讲解 “Vite + Electron 快速构建 Vue3 桌面应用的实现”。 简介 Vite 是一个基于 JavaScript 的构建工具,旨在提供一种快速开发的体验。它专注于提供简单的配置、快速的热更新功能以及媲美于 Webpack 的构建功能,对于快速实现前端开发者的需求非常有帮助。 Electron 是一个基于 Node.js 和 C…

    Vue 2023年5月27日
    00
  • Vue组件模板的几种书写形式(3种)

    当使用Vue.js构建应用程序时,组件是不可或缺的部分。Vue组件模板是描述组件外观的一种结构,它可以通过多种方式进行书写。本文将介绍Vue组件模板的三种常见书写形式。 1. 渲染函数形式 在Vue中,我们可以使用渲染函数来动态生成组件模板,而不是将模板作为字符串传递。渲染函数形式使用JavaScript来构建组件模板,具有更高的灵活性和可复用性。下面是一个…

    Vue 2023年5月28日
    00
  • 浅谈vue的生命周期

    对于“浅谈Vue的生命周期”的完整攻略,本文将按照以下目录结构展开: 什么是生命周期 生命周期的分类 Vue实例的生命周期 生命周期的钩子函数 Vue组件的生命周期 生命周期的示例说明 总结 接下来,我们将逐个讲解每个部分的内容。 什么是生命周期 生命周期,指的是Vue实例从创建到销毁过程中经过的一系列过程,可以理解为Vue实例的状态机。生命周期从实例被创建…

    Vue 2023年5月29日
    00
  • vue实现word,pdf文件的导出功能

    实现word,pdf文件的导出功能,需要使用vue和一些插件。以下是完整的攻略。 1. 安装依赖 首先需要在项目中安装相关依赖: npm install –save file-saver xlsx pdfmake file-saver:实现文件下载的插件 xlsx:实现excel文件导出的插件 pdfmake:实现pdf文件导出的插件 2. 配置操作 在v…

    Vue 2023年5月27日
    00
  • vue 根据数组中某一项的值进行排序的方法

    Vue根据数组中某一项的值进行排序的方法: 使用JavaScript的sort方法进行排序 Vue中的数据排序可以借助JavaScript的sort方法实现。以下是按照某一项属性值进行排序的代码示例: // 数组对象 var data = [{ id: 1, name: ‘Tom’, age: 23 }, { id: 2, name: ‘Lucy’, age…

    Vue 2023年5月27日
    00
  • 学习笔记编写vue的第一个程序

    学习笔记编写vue的第一个程序的完整攻略如下: 1. 前置条件 开始编写Vue的第一个程序,需要确保已经安装好了以下开发环境: Node.js:JavaScript 的运行环境 npm:Node.js 的包管理器 Vue CLI:Vue 的命令行工具 如果还没有安装,可以先参考 Vue官网 进行安装。 2. 创建项目 使用 Vue CLI 创建一个新项目,可…

    Vue 2023年5月27日
    00
  • element动态路由面包屑的实现示例

    下面是关于“element动态路由面包屑的实现示例”的详细攻略。 什么是动态路由面包屑? 在前端项目中,路由和面包屑导航都是非常重要的概念。路由决定了页面的展示,而面包屑则可以让用户更好地了解当前页面所在的位置和路径。而基于element组件库,可以实现动态路由面包屑,也就是根据用户的页面访问路径,自动生成面包屑导航,而不需要手动配置。 实现步骤 下面是el…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部