mysql 、oss 结合使用

以下是一个使用 Express、MySQL、OSS 和 axios 的 Node.js 示例。这个示例创建了一个 Express 服务器,该服务器有一个路由用于处理视频上传的请求。视频文件首先被上传到 OSS,然后视频的 OSS URL 被存储到 MySQL 数据库。

首先,我们需要安装必要的 npm 包:

// server.js
const express = require('express');
const multer = require('multer');
const OSS = require('ali-oss');
const mysql = require('mysql');
const axios = require('axios');

// 创建 MySQL 连接
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'user',
  password: 'password',
  database: 'database'
});

// 创建 OSS 客户端
const client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: '<Your bucket name>',
});

const upload = multer({ dest: 'uploads/' });

const app = express();

app.post('/upload', upload.single('video'), async (req, res) => {
  // 上传视频到 OSS
  const result = await client.put('object-name', req.file.path);

  // 将视频的 OSS URL 存储到 MySQL
  const query = 'INSERT INTO videos (url) VALUES (?)';
  connection.query(query, [result.url], (error, results, fields) => {
    if (error) return res.status(500).send(error);
    res.send('Video URL has been saved to MySQL.');
  });
});

app.listen(3000, () => console.log('Server is running on port 3000'));

// client.js
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');

const form = new FormData();
form.append('video', fs.createReadStream('/path/to/your/video.mp4'));

axios.post('http://localhost:3000/upload', form, {
  headers: form.getHeaders()
}).then(response => {
  console.log(response.data);
}).catch(error => {
  console.error(error);
});

请注意,你需要将上述代码中的 <Your region><Your AccessKeyId><Your AccessKeySecret><Your bucket name> 替换为你的 OSS 配置信息,将 localhostuserpassworddatabase 替换为你的 MySQL 连接信息,将 object-name 和 /path/to/your/video.mp4 替换为你的视频文件的 OSS 对象名和本地路径。

此外,这个示例假设你已经在 MySQL 中创建了一个名为 videos 的表,该表有一个名为 url 的列用于存储视频的 OSS URL。如果你的数据库结构不同,你可能需要修改 INSERT INTO videos (url) VALUES (?) 这行代码。

最后,这个示例没有处理任何错误,实际使用时你应该添加适当的错误处理代码。

multer - npm

Nodejs 第七十章(OSS)-CSDN博客

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

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

相关文章

mysql实战——xtrabackup全量备份/增量备份及恢复

一、测试前准备 mysql数据库 端口3306数据文件目录 /data/mysql/3306/data 安装目录/usr/lcoal/mysql配置文件/etc/my.cnf 创建数据库 testXtra 创建备份目录 备份目录/data/backup/备份恢复数据文件目录/data/mysql/3307/data备份恢复配置文件/etc/my_3307.cnf 二、开始…

【spring】@ResponseBody注解学习

ResponseBody介绍 ResponseBody 是一个Spring框架中的注解&#xff0c;主要用于Web开发&#xff0c;特别是在Spring MVC框架中。它的核心作用是改变Spring MVC处理HTTP请求响应的行为&#xff0c;使得从控制器方法返回的数据直接写入HTTP响应体&#xff08;Response Body&…

tomcat--安全配置多虚拟机

端口8005/tcp 安全配置管理 8005是Tomcat的管理端口&#xff0c;默认监听在127.0.0.1上。无需验证就可发送SHUTDOWN (大小写敏感)这个字符串&#xff0c;tomcat接收到后就会关闭此Server。此管理功能建议禁用&#xff0c;可将SHUTDOWN改为一串猜不出的字符串实现或者port修改成…

自己手写一个线性表List【C风格】

#include <iostream>//线性表、顺序表List#define MAX_SIZE 20 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0typedef int Status;//返回状态类型 typedef int ElemType;//元素类型//结构体 typedef struct {ElemType data[MAX_SIZE];//数据类型&#x…

探索 JavaScript 新增声明命令与解构赋值的魅力:从 ES5 迈向 ES6

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 &#x1f4af;声明命令 let、const&#x1f35f;1 let声明符&a…

Linux程序开发(十一):进程与进程间通信设计之趣味猫咪抓老鼠游戏

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

Java堆栈分区

Java在内存分配区域&#xff1a;栈区&#xff08;stack&#xff09;、堆区&#xff08;heap&#xff09;、方法区&#xff08;Method Area&#xff09;、常量池。 一、栈区 每个方法&#xff08;Method&#xff09;执行时&#xff0c;都会创建一个方法栈区。用于存储局部变量表…

【FreeRTOS移植到STM32F103C8T6超详细教程-->>>基于标准库】

移植教程 FreeRTOS简介FreeRTOS 介绍FreeRTOS优点 FreeRTOS移植FreeRTOS 下载FreeRTOS目录结构移植开始Keil5打开工程修改FreeRTOSConfig.h文件修改stm32f10x_it.c 测试FreeRTOS闪烁第一颗小灯 FreeRTOS简介 FreeRTOS 介绍 FreeRTOS 是市场领先的面向微控制器和小型微处理器的…

linux 安装chrome浏览器

一、下载安装包 下载地址&#xff1a;https://download.csdn.net/download/k0307x1990y/89349171 二、安装流程 [rootlocalhost ~]# rpm -ivh *.rpm [rootlocalhost ~]# yum -y localinstall google-chrome-stable_current_x86_64.rpm [rootlocalhost ~]# 三、修改配置文件…

Web(数字媒体)期末作业

一.前言 1.本资源为类似于打飞机的网页游戏 2.链接如下&#xff1a;【免费】前端web或者数字媒体的期末作业&#xff08;类似于打飞机的2D网页小游戏&#xff09;资源-CSDN文库 二.介绍文档

不靠后端,前端也能搞定接口!

嘿&#xff0c;前端开发达人们&#xff01;有个超酷的消息要告诉你们&#xff1a;MemFire Cloud来袭啦&#xff01;这个神奇的东东让你们不用依赖后端小伙伴们&#xff0c;也能妥妥地搞定 API 接口。是不是觉得有点不可思议&#xff1f;但是事实就是这样&#xff0c;让我们一起…

跨境电商赛道,云手机到底能不能化繁为简?

当下国内电商背景&#xff1a; 从零售额的数据来看&#xff1a;随着互联网的普及和消费者购物习惯的改变&#xff0c;国内电商市场规模持续扩大。据相关数据显示&#xff0c;网络消费亮点纷呈&#xff0c;一季度全国网上零售额达到了3.3万亿元&#xff0c;同比增长12.4%。这表…

聊一聊抖音小店

大家好&#xff0c;我是喷火龙。 一招鲜&#xff0c;吃遍天&#xff0c;以不变&#xff0c;应万变; 这是上次直播分享结束的时候我做的一个小总结&#xff0c;其实这几个字&#xff0c;也可以作为我们这几年电商经历的一个缩影与概括&#xff0c;也是对我们这群人最真切的一种…

谷粒商城环境准备~下 docker版

10. 配置中心 1&#xff09;修改“gulimall-coupon”模块 添加pom依赖&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>创建bootstr…

学习Uni-app开发小程序Day24

这一章节是要将从首页的点击进入子组件&#xff0c;然后展示对应的数据。这里涉及到页面传递参数、将获取的数据渲染到页面上 给组件通过defineProps声明变量传值渲染 因为使用的是子组件&#xff0c;那就需要再父组件中点击后&#xff0c;给子组件传递参数&#xff0c;根据参…

2021年上半年软件设计师上午真题及答案解析

1.在CPU中&#xff0c;用&#xff08; &#xff09;给出将要执行的下一条指令在内存中的地址。 A.程序计数器 B.指令寄存器 C.主存地址寄存器 D.状态条件寄存器 2.以下关于RISC和CISC计算机的叙述中&#xff0c;正确的是&#xff08; &#xff09;。…

iptables防火墙【其二 实验篇】

保存&#xff0c;还原规则 防火墙规则的备份和还原 导出&#xff08;备份&#xff09;所有表的规则 iptables-save > /opt/ipt.txt 导入&#xff08;还原&#xff09;规则 iptables-restore < /opt/ipt.txt 将iptables规则文件保存在 /etc/sysconfig/iptables 中&#xf…

Rust学习心得

我分享一下一年的Rust学习经历&#xff0c;从书到代码都一网打尽。 关于新手如何学习Rust&#xff0c;我之前在Hacker News上看到了这么一篇教程&#xff1a; 这篇教程与其他教程不同的时&#xff0c;他不是一个速成教程&#xff0c;而是通过自己的学习经历&#xff0c;向需要…

常用的框架——— Android UtilCode

AndroidUtilCode是一个功能强大且易于使用的Android库。该库封装了Android开发中经常使用的具备完整演示和单元测试的功能。经过使用其封装的API&#xff0c;能够大大提升开发效率。该程序主要由两个模块组成&#xff0c;utilcode&#xff08;一般在开发中使用&#xff09;和su…

【C语言】实现贪吃蛇--项目实践(超详细)

前言&#xff1a; 贪吃蛇游戏大家都玩过吧&#xff1f;这次我们要用C语言来亲手制作一个&#xff01;这个项目不仅能让我们复习C语言的知识&#xff0c;还能了解游戏是怎么一步步做出来的。我们会一起完成蛇的移动、食物的生成&#xff0c;还有碰撞检测等有趣的部分。准备好了…