node+vue3+mysql前后分离开发范式——实现视频文件上传并渲染

文章目录

    • ⭐前言
    • ⭐ 功能设计与实现
      • 💖 node上传文件写入file_map映射表
      • 💖 vue3前端上传文件回显
    • ⭐ 效果
    • ⭐结束

yma16-logo

⭐前言

大家好,我是yma16,本文分享关于 node+vue3+mysql前后分离开发范式——实现视频文件上传并渲染。
技术选型
前端:vite+vue3+antd
后端:node koa
数据库:mysql

koa是一个现代的Node.js框架,可以用来构建Web应用程序。

Node.js的mime库

Node.js的mime库是用于根据文件扩展名获取对应的MIME类型的库。MIME类型是用于标识文件类型的一种标准,它在互联网通信中起到了非常重要的作用。MIME库使得开发者可以方便地根据文件扩展名获取对应的MIME类型,从而在处理文件时能够正确地设置Content-Type头。

mime库的发展可以追溯到2010年,最早由TJ Holowaychuk创建。最初版本的mime库是一个简单的JavaScript对象,其中包含了一些常见文件扩展名和对应的MIME类型。用户可以通过调用mime.lookup()方法,传入文件扩展名来获取对应的MIME类型。

随着时间的推移,mime库得到了越来越多的贡献和改进。根据用户的反馈和需求,mime库逐渐添加了更多的文件扩展名和对应的MIME类型。同时,mime库还提供了一些其他的方法,如mime.extension()用于通过MIME类型获取对应的文件扩展名,mime.getType()用于根据文件名获取MIME类型等。

近年来,随着Web技术的发展和Node.js的流行,mime库的使用越来越广泛。它被大量应用于Web开发中,特别是在处理静态文件时。由于mime库的简单易用性和快速性能,它逐渐成为了Node.js开发者的首选库之一。

目前,mime库已经发展到了较为成熟的阶段。它在GitHub上拥有超过2万的星标,表明了它的受欢迎程度和广泛使用。同时,mime库也在不断更新和维护,以适应新的需求和文件类型的变化。

该系列往期文章
前端vite+vue3结合后端node+koa——实现代码模板展示平台(支持模糊搜索+分页查询)
node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查

⭐ 功能设计与实现

文件映射表:
记录文件的位置,方便读取
file_map的表结构

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for file_map
-- ----------------------------
DROP TABLE IF EXISTS `file_map`;
CREATE TABLE `file_map`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id',
  `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类型',
  `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '路径',
  `create_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人',
  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

表结构
在这里插入图片描述

💖 node上传文件写入file_map映射表

限制上传的类型,用户名根据jwt的请求头获取
上传视频接口编写如下:

// upload mv
router.post('/upload/mv', async (ctx) => {
   
    try{
   
        // authorization是 Bearer + ' ' + jwt字符串
        const parts = ctx.header.authorization.trim().split(' ');
        const token = parts[1];
        const payload = jwtToken.verify(token, appKey);
        const {
   username} =payload;
        const usernamePath=username? 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/399679.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何实现系统的高可用

一、SLA 当回答系统高可用时,就是回答这几个问题: 1、如何 评估系统高可用? 2、如何监控系统高可用? 3、如何保证系统高可用? 监控系统的内容: 基础设施监控有监控报警指标,分两部分内容&am…

CryptoPunks NFT 概览与数据分析

作者:stellafootprint.network 编译:cicifootprint.network 数据源:CryptoPunks NFT Collection Dashboard CryptoPunks 于 2017 年推出,是 NFT 热潮的先驱,拥有 10,000 个独特的角色,这些角色已成为…

学习python的第二天

已经隔了8天没学习了,期间虽然有在开发那个业绩管理系统,但是很多时间都在网易云里emo,逛着被她拉黑的主页,用老版本app看她的听歌排行,魔怔了,她爱听的歌我都听遍了;她的排行榜一更新&#xff…

​LeetCode解法汇总105. 从前序与中序遍历序列构造二叉树

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给定两个整…

(十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用

前言 本节内容我们主要介绍在Jenkins流水线中,其构建过程中的一些构建策略的配置,例如通过远程http构建、定时任务构建、轮询SCM构建、参数化构建、Git hook钩子触发构建等,可根据不同的需求完成不同构建策略的配置。 正文 Throttle build…

如何使用CanaryTokenScanner识别Microsoft Office文档中的Canary令牌和可疑URL

关于CanaryTokenScanner CanaryTokenScanner是一款功能强大的Canary令牌和可疑URL检测工具,该工具基于纯Python开发,可以帮助广大研究人员快速检测Microsoft Office和Zip压缩文件中的Canary令牌和可疑URL。 在网络安全领域中,保持警惕和主动…

Failure [DELETE_FAILED_INTERNAL_ERROR]的解决办法

1.接上ADB 找到包名。 2 adb uninstall --user 0 com.subpos.client

2.20 day2 QT

自由发挥登录窗口的应用场景,实现一个登录窗口界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口相关设置this->setWindowTitle("登入页面"); //设置 窗口 标题this->setWindowIcon(QIcon("D:…

ubuntu制作windows的u盘启动盘

概要: 本篇演示在ubuntu22.04中制作windows10的u盘启动盘 一、下载woeusb 1、下载woeusb 在浏览器中输入https://github.com/woeusb/woeusb/releases访问woeusb 点击红色矩形圈出来的部分,下载woeusb 2、安装wimtools wimtools是woeusb的一个必须的…

CentOS安装Docker(超详细)

文章目录 1.CentOS安装Docker1.1.卸载(可选)1.2.安装docker1.3.启动docker1.4.配置镜像加速 2.CentOS安装DockerCompose2.1.下载2.2.修改文件权限2.3.Base自动补全命令: 3.Docker镜像仓库3.1.简化版镜像仓库3.2.带有图形化界面版本3.3.配置Do…

Git基本指令

从远程拉代码 git clone gitgitlab-internal.wedobest.com.cn:dengyanhui/gittest.git添加所有文件到待上传列表 git add .提交 git commit -m message推送 git push获取现在的状态 git status更新本地代码 git pullgit拉取某一分支代码 git clone -b develop XXX本地删除…

【Oracle】玩转Oracle数据库(三):数据库的创建和管理

前言 嘿,各位数据库小能手们!今天我们要进入数据库的创世纪,探索Oracle数据库的创建和管理!🔧💻 在这篇博文【Oracle】玩转Oracle数据库(三):数据库的创建和管理中&#…

Redis面试题关于持久化的问题

什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么? 持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。 Redis 提供了两种持久化方式:RDB(默认) 和AOF RDB: rdb是Red…

【LeetCode】无权图的最短路精选7题——单源、多源

目录 无权图的单源最短路问题: 1. 迷宫中离入口最近的出口(中等) 2. 最小基因变化(中等) 3. 单词接龙(困难) 4. 为高尔夫比赛砍树(困难) 无权图的多源最短路问题&a…

开源CMS Drupal本地快速部署并实现无公网ip环境远程访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 前言 Dupal是一个强大的CMS,适用于各种不同的网站项目,从小型个人博客到大型企业级门户网站。它的学习…

蓝桥杯嵌入式第12届真题(完成) STM32G431

蓝桥杯嵌入式第12届真题(完成) STM32G431 题目 程序 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body**************************…

【业务功能篇135】多线程+countDownLatch执行大数据量定时任务

对于业务中存在一些功能需求,业务逻辑复杂且数据量大,过程处理也就比较繁琐,如果直接在单线程同步执行,效率就比较低了,所以我们需要利用多线程,开启多个线程去把任务分线程异步执行,这些效率就…

【java】小学生数学练习题目生成系统

本文章主要是CSDN-问答板块,有题主提出的问题,我这边将完整代码提供出来,仅供大家参考学习! 一、效果截图 二、直接上代码 package com.example.dingtalk.question;import javax.script.ScriptEngine; import javax.script.Scrip…

点成分享|如何让地球更绿,它能给你答案

一、背景介绍 随着全球经济的飞速发展,环境问题也日益严重。现代社会面临着诸如全球变暖、气候异常、空气和水质污染等诸多环境问题。其中,温室气体的排放是导致全球变暖的主要原因之一。温室气体的排放量上升加剧气候异常,影响人类生存和自…

NFC三大工作模式及其在物联网应用实例

NFC支持三种通信模式:读写模式、点对点模式和卡模拟模式。在此三种模式下,都仅需简单点击便可启动传输。 在读写模式下,系统执行非接触式读写功能。该系统的NFC芯片与内置NFC的设备-诸如非接触式智能卡、NFC标签或具有NFC功能的智能手机&…