IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 实现视频和图片的上传,并将相关上传后的地址保存到数据库中 -> 正文阅读

[大数据]实现视频和图片的上传,并将相关上传后的地址保存到数据库中

@[TOC] 实现视频和图片的上传

个人学习笔记

实现代码如下:

  • 我的文件目录结构
    在这里插入图片描述

  • 路由 router upload.js

const express = require('express')
const router = express.Router()
// 导入multer 和path 
const multer = require('multer')
const path = require('path')

// 创建multer实例对象,通过dest属性指定文件的存放路径
const uploads = multer({dest: path.join(__dirname, '../temp_upload')})
const uploadHandle = require('../router_handle/upload')
// 上传模块
router.post('/upload', uploads.array('upload',12),uploadHandle.upload)


module.exports = router
  • 处理函数模块 router_handle upload.js
const fs = require('fs')
const moment = require('moment')
const path = require('path')
// 引入 数据库
const db = require('../db/config')
exports.upload = (req, res) => {
    const info = req.body
    const files = req.files
    // 存放新的图片/视频路径
    var fileList = []
    // 视频文件格式
    let fileType = ["avi", "wmv", "mpg", "mpeg", "mov", "rm", "ram", "swf", "flv", "mp4", "mp3", "wma", "avi", "rm", "rmvb", "flv", "mpg", "mkv"]
    // 常用的图片格式
    let imgType = ['jpg','png','jpeg','gif','webp','bmp','tif']
    for (item in files) {
        var file = files[item]
        // console.log(file)
        // 得到上传图片/视频类型
        var type = file.originalname.split('.')[1]
        // 设置需要给图片/视频新的名字
        var ttt = moment().format("YYYYMMDDHHmmss")
        var ran = parseInt(Math.random() * 89999 + 10000)
        var newName = ttt + ran
        if (fileType.indexOf(type) !== -1) {
            // 选择移动视频的新路径
            var newpath = path.join(process.cwd(), "/upload/video/" + newName + "." + type)
            // 移动视频并修改视频名字
            fs.renameSync(file.path, newpath)
        } else if (imgType.indexOf(type) !== -1) {
            // 选择移动图片的新路径
            var newpath = path.join(process.cwd(), "/upload/images/" + newName + "." + type)
            // 移动图片并修改图片名字
            fs.renameSync(file.path, newpath)
        } else {
            return res.cc('上传文件格式不正确')
        }
        file.path = newName
        fileList.push(newpath)
    }
    // 将图片或者视频地址存储到数据库中
    // 判断上传文件是否是视频文件
    if (fileType.indexOf(type) !== -1) {
        // 定义sql语句
        const videoSql = `select video from patient where id = ?`
        db.query(videoSql, info.id, (err, result) => {
            if (err) return res.cc(err)
            if (result.length !== 1) return res.cc('查询失败')
            // 存储视频地址
            // 定义sql语句
            const vInserSql = `update patient set video = ?`
            // p判断将存储字段是否为null
            if (!result[0].video) {
                db.query(vInserSql, JSON.stringify(fileList), (err, result) => {
                    if (err) return res.cc(err)
                    return res.cc('视频上传成功')
                })
            } else if (JSON.parse(result[0].video).length > 0) {
                // 获取已存储的地址
                const sqlData = JSON.parse(result[0].video)
                // 遍历新上传的视频
                for (let i = 0; i < fileList.length; i++) {
                    let item = fileList[i]
                    // 将数据添加到数组中
                    sqlData.unshift(item)
                }
                // 执行sql 语句将最新地址更新存储到数据库当中
                db.query(vInserSql, JSON.stringify(sqlData), (err, result) => {
                    if (err) return res.cc(err)
                    res.send('video insert ok')
                })
            }

        })

    } else if (imgType.indexOf(type) !== -1){
        // 上传图片
        const imgSql = `select picture from patient where id = ?`
        db.query(imgSql, info.id, (err, result) => {
            if (err) return res.cc(err)
            if (result.length !== 1) return res.cc('查询失败')
            // 查询成功之后
            // 存储图片地址
            // 定义存储sql语句
            const pInsertSql = `update patient set picture = ?`
            if (!result[0].picture) {
                db.query(pInsertSql, JSON.stringify(fileList), (err, result) => {
                    if (err) return res.cc(err)
                    return res.cc('图片上传成功', 200)
                })
            } else if (JSON.parse(result[0].picture.length)) {
                // 数据库中图片的地址
                const sqlData = JSON.parse(result[0].picture)
                // 遍历新的图片地址
                for (let i = 0; i < fileList.length; i++) {
                    const item = fileList[i]
                    sqlData.unshift(item)
                }
                db.query(pInsertSql, JSON.stringify(sqlData), (err, result) => {
                    if (err) return res.cc(err)
                    res.cc('image update ok', 200)
                })

            }
        })

    } else {
        res.cc('上传文件格式不正确,请重新上传!!!')
    }
}


结果如下:

  • 数据库
    在这里插入图片描述
  • 移动后的结果
    在这里插入图片描述
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-25 12:36:07  更:2021-10-25 12:36:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:03:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码