以下是一个使用 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) => {// 上传视频到 OSSconst result = await client.put('object-name', req.file.path);// 将视频的 OSS URL 存储到 MySQLconst 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 配置信息,将localhost
、user
、password
、database
替换为你的 MySQL 连接信息,将object-name
和/path/to/your/video.mp4
替换为你的视频文件的 OSS 对象名和本地路径。此外,这个示例假设你已经在 MySQL 中创建了一个名为
videos
的表,该表有一个名为url
的列用于存储视频的 OSS URL。如果你的数据库结构不同,你可能需要修改INSERT INTO videos (url) VALUES (?)
这行代码。最后,这个示例没有处理任何错误,实际使用时你应该添加适当的错误处理代码。
multer - npm
Nodejs 第七十章(OSS)-CSDN博客