Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)

yizhihongxing

OK,这里是 “Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)”的完整攻略:

攻略概览

本攻略主要介绍如何使用 Express 实现前后端之间的图片上传,以及如何将上传的图片存储到 MySQL 数据库中。攻略包含以下主要内容:

  1. 前端页面的开发,包括上传图片的界面和相应的 JS 代码;
  2. Express 后端的开发,包括上传图片的路由和保存图片到 MySQL 数据库的代码;

下面详细介绍这些内容。

前端页面的开发

1. HTML 页面

首先,我们需要一个 HTML 页面作为上传图片的入口。下面是一份模板代码,你可以根据需要进行相应的修改:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Upload Image to MySQL</title>
</head>
<body>
    <h1>Upload Image to MySQL</h1>
    <form enctype="multipart/form-data">
        <input type="file" name="file">
        <button type="submit">Upload</button>
    </form>
</body>
</html>

在这段代码中,我们使用了一个 form 标签来包裹一个文件上传的 input 标签。这里需要注意的是,form 标签的 enctype 属性必须设置为 multipart/form-data,否则无法上传二进制文件。

2. JS 代码

接下来,我们需要一份上传图片的 JS 代码。下面是一份示例代码,你可以根据需要进行相应的修改:

const uploadButton = document.querySelector('button[type="submit"]')
uploadButton.addEventListener('click', (event) => {
    event.preventDefault()
    const formData = new FormData()
    const fileInput = document.querySelector('input[type="file"]')
    formData.append('file', fileInput.files[0])
    fetch('/upload', {
        method: 'POST',
        body: formData
    })
    .then(response => response.text())
    .then(result => {
        alert(result)
    })
})

在这段代码中,我们首先为上传按钮添加了一个 click 事件监听器。当用户点击上传按钮时,我们先通过 FormData 实例对象构造了一个包含上传文件信息的表单数据,然后使用 fetch API 发送一个 POST 请求到 /upload 路由。最后,我们使用 alert 方法显示上传结果。

Express 后端的开发

1. 安装依赖

首先,我们需要安装必要的依赖。在命令行中输入以下命令:

$ npm install express multer mysql2

其中,express 是 Express 的核心依赖,multer 是一个 Node.js 中间件,用于处理 multipart/form-data 类型的数据,mysql2 是 MySQL 数据库的 Node.js 驱动程序。

2. 服务器代码

完成依赖安装后,我们开始编写服务器代码。下面是一份示例代码,你可以根据需要进行相应的修改:

const express = require('express')
const multer = require('multer')
const mysql = require('mysql2')

// 创建数据库连接
const connection = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'database'
})

// 创建 Express 应用实例
const app = express()

// 创建上传中间件
const upload = multer({
    dest: 'uploads/' // 上传文件的存储目录
})

// 处理上传请求
app.post('/upload', upload.single('file'), (req, res, next) => {
    // 获取上传文件的信息
    const { originalname, mimetype, filename, path } = req.file
    // 将文件信息保存到 MySQL 数据库
    connection.query(
        'INSERT INTO `images` (`filename`, `mimetype`, `originalname`, `path`) VALUES (?, ?, ?, ?)',
        [filename, mimetype, originalname, path],
        (error, result) => {
            if (error) {
                next(error)
            } else {
                res.send('Upload success!')
            }
        }
    )
})

// 启动服务器
app.listen(3000, () => {
    console.log('Server is running on http://localhost:3000')
})

在这段代码中,我们首先创建了一个 MySQL 数据库连接池。然后,我们创建了一个 Express 应用实例,使用 multer 中间件来处理上传请求,并将上传文件信息保存到 MySQL 数据库。最后,我们监听了 3000 端口并启动了服务器。

示例说明

示例一:上传成功

当用户选择了需要上传的图片文件后,点击上传按钮,服务器将会将图片文件保存到指定的文件目录下,并将文件信息存储到数据库中。这时,浏览器将会弹出一个提示框,显示上传成功。

示例二:上传失败

当用户上传的图片文件大小超过了预期的大小,或者上传过程中出现网络错误等问题时,服务器将不会接受上传请求,并将会返回一个相应的错误信息。此时,浏览器将不会弹出提示框。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一) - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 使用NODE.JS创建一个WEBSERVER(服务器)的步骤

    使用Node.js创建一个Web服务器需要经过以下步骤: 步骤一:导入http模块 在Node.js中,我们需要使用内置的http模块,因此我们需要导入它。在文件的开头,写下以下代码: const http = require(‘http’); 步骤二:使用http模块创建服务器 接下来,我们需要使用http模块的createServer()函数创建一个服务…

    node js 2023年6月8日
    00
  • Node.js中path.join()优势例举分析

    “Node.js中path.join()优势例举分析”攻略: 什么是path.join()? 在Node.js中,path模块是对文件路径进行操作的模块,常用的操作有:路径拼接、解析、返回绝对路径、返回相对路径等。其中,path.join()是将路径片段通过特定的分隔符连接起来形成路径的方法。 语法格式: path.join([…paths]) …p…

    node js 2023年6月8日
    00
  • nodejs 使用nodejs-websocket模块实现点对点实时通讯

    使用nodejs-websocket模块实现点对点实时通讯 什么是nodejs-websocket模块 nodejs-websocket是一个用于node.js的WebSocket服务端实现的模块。它依赖Node.js内置的http模块,并支持与浏览器WebSocket协议兼容。 安装nodejs-websocket模块 在终端中执行以下命令进行安装: np…

    node js 2023年6月9日
    00
  • 深入探究node之Transform

    深入探究node之Transform 简介 在Node.js中,streams(可读、可写、可读写)是一种非常强大的工具。Transform是其中非常有用的一种,它是一个可读写stream,并且它的输出和输入之间的转换非常灵活,可以通过编程方式自定义操作。Transform流可以被用在数据处理、转化,以及对数据进行一些简单或者复杂的转换等场景。 基本用法 T…

    node js 2023年6月8日
    00
  • vue-cli3单页构建大型项目方案

    一、如何使用vue-cli3创建单页应用项目? Vue CLI是vue官方推出的一个全新的脚手架工具,它可以帮助我们快速地构建一个基于Vue.js的单页应用程序。 首先需要在电脑上安装 Node.js 与 npm,然后在命令行工具中执行以下命令进行安装: npm install -g @vue/cli 安装完成之后,在命令行中执行以下命令来创建一个新的Vue…

    node js 2023年6月9日
    00
  • 使用ngrok+express解决本地环境中微信接口调试问题

    下面是使用ngrok+express解决本地环境中微信接口调试问题的完整攻略: 1. 什么是ngrok ngrok是一款基于Go语言开发的反向代理应用程序,可以将本地服务映射到公网访问地址,支持http、https、tcp等多种协议。即使是在家里或者公司网络环境下,使用ngrok也可以让外部计算机通过Internet访问本地的应用程序。 2. 安装和配置ng…

    node js 2023年6月8日
    00
  • Node.js实现JS文件合并小工具

    Node.js实现JS文件合并小工具的完整攻略如下: 什么是Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,使 JavaScript 可以脱离浏览器环境独立运行在服务器端,并且可以通过命令行进行操作。 实现JS文件合并小工具 第一步:安装Node.js 在官网下载对应操作系统版本的Node.js,安装完…

    node js 2023年6月8日
    00
  • 如何在Linux上安装Node.js

    下面是在Linux上安装Node.js的详细攻略: 1. 更新系统 在安装Node.js之前,应该先更新系统中的所有软件包。 在Ubuntu系统中,可以使用以下命令更新已安装的软件包: sudo apt-get update sudo apt-get upgrade 在CentOS系统中,可以使用以下命令更新已安装的软件包: sudo yum update …

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部