以下是一個使用 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博客