Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解

标题:Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解

介绍

本文将详细介绍如何使用Vue、Node.js和MongoDB实现一款图片上传组件,该组件可以实现图片预览和删除功能。本文包含两个示例,分别介绍使用全局注册和局部注册组件的实现方法。

示例一:全局注册组件

第一步:创建项目

创建一个Vue项目,使用Vue CLI工具进行创建。

vue create vue-image-upload

第二步:创建组件

在src/components目录下创建一个名为ImageUpload.vue的组件。该组件实现了图片上传和预览功能,代码如下:

<template>
  <div>
    <input type="file" ref="fileInput" @change="onFileChange" style="display: none;">
    <button @click="upload">上传图片</button>
    <div>
      <img v-for="(image, index) in images" :src="image.url" :key="index" style="width: 200px;">
      <button @click="deleteImage(index)">删除图片</button>
    </div>
  </div>
</template>

<script>
import axios from 'axios'
export default {
  data() {
    return {
      images: []
    }
  },
  methods: {
    onFileChange() {
      let files = this.$refs.fileInput.files
      if (!files.length) {
        return
      }
      this.createImage(files)
    },
    createImage(files) {
      let formData = new FormData()
      formData.append('image', files[0])
      axios.post('http://localhost:3000/images/upload', formData, {
        headers: {
          'Content-Type': 'multipart/form-data'
        }
      })
        .then(response => {
          console.log(response)
          this.images.push(response.data)
        })
        .catch(error => {
          console.log(error)
        })
    },
    deleteImage(index) {
      axios.delete(`http://localhost:3000/images/delete/${this.images[index]._id}`)
        .then(response => {
          console.log(response)
          this.images.splice(index, 1)
        })
        .catch(error => {
          console.log(error)
        })
    },
    upload() {
      this.$refs.fileInput.click()
    }
  }
}
</script>

<style scoped>

</style>

第三步:创建Node.js后端

在项目根目录下创建一个名为server.js的文件,用于启动Node.js服务。代码如下:

const express = require('express')
const multer = require('multer')
const cors = require('cors')
const mongoose = require('mongoose')
const Image = require('./models/Image')

mongoose.connect('mongodb://localhost:27017/image_upload', {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
  .then(() => console.log('Mongoose connected'))
  .catch(err => console.log(err))

const app = express()

app.use(cors())
app.use(express.static('public'))

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'public/uploads')
  },
  filename: (req, file, cb) => {
    cb(null, file.originalname)
  }
})

const upload = multer({ storage }).single('image')

app.post('/images/upload', (req, res) => {
  upload(req, res, (err) => {
    if (err) {
      console.log(err)
      return res.sendStatus(500)
    }
    const image = new Image({
      url: `http://localhost:3000/uploads/${req.file.originalname}`
    })
    image.save()
      .then(() => res.json(image))
      .catch(err => {
        console.log(err)
        res.sendStatus(500)
      })
  })
})

app.delete('/images/delete/:id', (req, res) => {
  const id = req.params.id
  Image.findOneAndDelete({ _id: id })
    .then(() => res.sendStatus(200))
    .catch(() => res.sendStatus(500))
})

app.listen(3000, () => console.log('Server started'))

第四步:创建数据库schema

创建一个名为models/Image.js的文件,用于定义数据库的schema。代码如下:

const mongoose = require('mongoose')

const imageSchema = new mongoose.Schema({
  url: String
})

module.exports = mongoose.model('Image', imageSchema)

第五步:引入组件

在App.vue文件中引入组件,代码如下:

<template>
  <div id="app">
    <ImageUpload />
  </div>
</template>

<script>
import ImageUpload from './components/ImageUpload.vue'

export default {
  name: 'app',
  components: {
    ImageUpload
  }
}
</script>

<style>
</style>

第六步:启动项目

使用以下命令,启动项目:

npm run serve (运行前端)
node server.js (运行后端)

第七步:测试

打开浏览器,访问http://localhost:8080。上传一张图片,可以看到图片已经成功上传并预览。点击删除图片按钮,图片成功删除。

示例二:局部注册组件

本示例与示例一相同,只是使用了局部注册组件的方法。

第一步:创建项目

同示例一。

第二步:创建组件

同示例一。

第三步:创建Node.js后端

同示例一。

第四步:创建数据库schema

同示例一。

第五步:引入组件

在App.vue文件中引入组件,代码如下:

<template>
  <div id="app">
    <image-upload />
  </div>
</template>

<script>
import ImageUpload from './components/ImageUpload.vue'

export default {
  name: 'app',
  components: {
    'image-upload': ImageUpload
  }
}
</script>

<style>
</style>

第六步:启动项目

使用以下命令,启动项目:

npm run serve (运行前端)
node server.js (运行后端)

第七步:测试

同示例一。

总结

本文介绍了使用Vue、Node.js和MongoDB实现一款图片上传组件,该组件可以实现图片预览和删除功能。本文包含两个示例,分别介绍使用全局注册和局部注册组件的实现方法。该组件可以方便地应用于各种Vue项目中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解 - Python技术站

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

相关文章

  • node.js入门实例helloworld详解

    下面是“node.js入门实例helloworld详解”的完整攻略。 概述 本文将详细介绍如何使用node.js编写一个简单的helloworld程序。node.js是一个基于Chrome V8引擎的JavaScript运行环境,旨在提供一种轻量级、高效率的网络应用程序开发方式。node.js使用了事件驱动、异步I/O等机制来实现高并发、高性能的特性。 环境…

    MongoDB 2023年5月16日
    00
  • ubuntu取消pppoe启动时自动拔号的设置方法

    下面是详细的“ubuntu取消pppoe启动时自动拔号的设置方法”的攻略: 1. 确认当前系统网络连接方式 首先,我们需要确认当前系统是使用 pppoe 拨号方式连接网络还是其他方式。可以在命令行中输入以下命令确认: nmcli connection show 如果当前系统是使用 pppoe 拨号方式连接网络,则会看到类似如下输出结果: NAME UUID …

    MongoDB 2023年5月16日
    00
  • 在Python中使用mongoengine操作MongoDB教程

    本文将详细讲解在Python中使用mongoengine操作MongoDB的完整攻略。mongoengine是Python下操作MongoDB的ORM库,它提供了更简单的方式来创建MongoDB数据库和文档,并对Python和MongoDB之间架起了一座方便而高效的桥梁。以下分为以下步骤进行说明。 步骤一:安装mongoengine库 在开始使用mongoe…

    MongoDB 2023年5月16日
    00
  • mongoDB 实现主从读写分离实现的实例代码

    下面我将详细讲解 MongoDB 实现主从读写分离实现的实例代码。 什么是 MongoDB 主从复制? MongoDB 主从复制(replication)是指在 MongoDB 中允许将一台 MongoDB 服务器指定为主节点(master),其他 MongoDB 服务器则作为从节点(slave),从主节点复制数据。 实现 MongoDB 主从复制 实现 M…

    MongoDB 2023年5月16日
    00
  • MongoDB 入门指南

    以下是针对“MongoDB 入门指南”的完整攻略,包含两条示例说明。 MongoDB 入门指南 什么是 MongoDB MongoDB是一种文档型的数据库,它使用Json-like的BSON格式,并支持动态Schema和Flexible Query。MongoDB可以快速地存储和查询大量非结构化、半结构化和结构化数据。MongoDB是一个非常流行的开源数据库…

    MongoDB 2023年5月16日
    00
  • MongoDB入门教程之细说MongoDB数据库的增删查改操作

    MongoDB是NoSQL数据库中的一种,它具有高性能、高可扩展性、高可用性等特点,与传统关系型数据库不同,它采用的是文档型数据存储方式,是一种非常适合于大数据存储和处理的数据库。本篇教程将详细讲解MongoDB数据库的增删查改操作,在学习前先确保你已经安装并启动了MongoDB服务。 MongoDB数据管理语言 在操作MongoDB的数据库时,必须使用一种…

    MongoDB 2023年5月16日
    00
  • mongodb在windows下的安装步骤分享

    下面我将为您详细讲解MongoDB在Windows下的安装步骤分享。 MongoDB在Windows下的安装步骤分享 1. 下载MongoDB 首先,您需要前往MongoDB官网(https://www.mongodb.com/)下载MongoDB的Windows版本。 在官网的“Download”页面中,选择“Community Server”版本,并根据…

    MongoDB 2023年5月16日
    00
  • MongoDB的基本安装与管理命令脚本总结

    我为您详细讲解“MongoDB的基本安装与管理命令脚本总结”的完整攻略,以下是具体步骤: 安装MongoDB: 在Ubuntu和Debian等基于Debian的Linux发行版上,可以通过以下命令安装MongoDB: sudo apt-get update sudo apt-get install mongodb 在RHEL、CentOS等基于RedHat的…

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