前端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 mixins和extends的巧妙用法

    当我们在开发Vue应用时,有时候会发现多个组件之间存在一些相同的逻辑和属性,此时我们可以使用mixins和extends两种方式来解决这类问题。 什么是mixins? mixins是一种组件复用的方式,可以将通用的逻辑和属性封装在一个mixin对象中,然后在需要使用这些逻辑和属性的组件中引入该mixin对象即可实现代码的复用。使用mixins可以大幅减少代码…

    Vue 2023年5月27日
    00
  • Vue ​v-model相关知识总结

    关于 Vue v-model 相关知识的总结,我可以分为以下几个部分进行讲解: 1. v-model 的作用 v-model 是 Vue 用于实现表单元素双向绑定的一个指令,主要作用是在输入和输出表单值时自动同步,省去了我们手动监听 input 事件和调用赋值方法去同步的繁琐过程。 2. 使用 v-model 的要求 在使用 v-model 时,需要满足以下…

    Vue 2023年5月27日
    00
  • SpringBoot校园综合管理系统实现流程分步讲解

    下面我将详细讲解“SpringBoot校园综合管理系统实现流程分步讲解”的完整攻略。 一、项目介绍 在这个部分,我们可以简要介绍一下该项目的背景和目的,以及使用的开发工具和框架等相关内容。 二、项目环境搭建 在这个部分,我们需要介绍如何搭建项目所需的环境,以及如何准备开发所需要的依赖库及配置文件等。 三、项目结构说明 在这个部分,我们需要详细介绍整个项目的结…

    Vue 2023年5月28日
    00
  • Vue的computed计算属性你了解吗

    Vue的computed计算属性在Vue框架开发中非常常用。它可以根据计算函数里的数据自动计算出结果,并且在数据发生变化时会自动重新计算,然后用于渲染模板。在这篇文章中,我们将深入了解Vue的computed计算属性,掌握计算属性的使用方法和技巧。 什么是Vue的computed计算属性 Vue的computed计算属性是在Vue实例中定义的函数。它返回一个…

    Vue 2023年5月28日
    00
  • Vue privide 和inject 依赖注入的使用详解

    Vue中,provide和inject是实现依赖注入的两个函数。在组件树中,父组件可以通过provide提供一些数据或方法,子组件可以通过inject来注入这些数据或方法。 在使用provide向下传递时,我们可以把需要传下去的属性或方法放在一个对象中。如下面的例子: // Parent.vue <template> <div> &l…

    Vue 2023年5月27日
    00
  • Vue 3.0 前瞻Vue Function API新特性体验

    以下是关于“Vue 3.0 前瞻Vue Function API新特性体验”的详细攻略。 什么是Vue Function API? Vue Function API是指在Vue.js 3.0中引入的一组全新的API,它们的设计目标是更好地解决组件库编写过程中出现的一些问题,如代码的可维护性、组件之间的通信以及更好的类型支持等。Vue Function API…

    Vue 2023年5月28日
    00
  • vue中axios给后端传递参数出现等于号和双引号的问题及解决方法

    下面将详细讲解“vue中axios给后端传递参数出现等于号和双引号的问题及解决方法”的完整攻略。 问题描述 在使用vue和axios进行前端开发的过程中,我们通常需要向后端传递参数。但是,有时候在传递参数的过程中,会出现等于号和双引号的问题,导致后端无法正确解析参数。具体表现为,如果参数中包含等于号或双引号,后端很难确定参数的边界,从而导致解析错误。 解决方…

    Vue 2023年5月27日
    00
  • 如何利用vue3实现一个俄罗斯方块

    让我们来详细讲解如何利用Vue3实现一个俄罗斯方块。 准备工作 在开始实现之前,你需要安装好最新版本的Node.js和Vue CLI。你可以在终端中使用以下命令进行安装: # 安装Node.js brew install node # 安装Vue CLI npm install -g @vue/cli 创建工程 使用Vue CLI创建一个新的Vue工程: v…

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