Skip to content

node阿里云oss文件上传

安装依赖

npm install express multer @alicloud/oss
npm install express multer @alicloud/oss

基础代码实现

创建 server.js 文件:

js
const express = require('express');
const multer = require('multer');
const OSS = require('@alicloud/oss');
require('dotenv').config();

// 创建 Express 应用
const app = express();
const port = 3000;

// 配置 Multer 内存存储
const storage = multer.memoryStorage();
const upload = multer({ storage });

// 创建 OSS 客户端
const client = new OSS({
  region: 'oss-cn-hangzhou',
  accessKeyId: 'your-access-key-id',
  accessKeySecret: 'your-access-key-id',
  bucket: 'your-bucket-name'
});

// 文件上传路由
app.post('/upload', upload.single('file'), async (req, res) => {
  try {
    if (!req.file) {
      return res.status(400).json({ error: 'No file uploaded' });
    }

    // 生成唯一文件名
    const timestamp = Date.now();
    const extension = req.file.originalname.split('.').pop();
    const objectName = `uploads/${timestamp}.${extension}`;

    // 上传到 OSS
    const result = await client.put(
      objectName,
      req.file.buffer,
      { headers: { 'Content-Type': req.file.mimetype } }
    );

    res.json({
      message: 'File uploaded successfully',
      url: result.url
    });
  } catch (error) {
    console.error('Upload error:', error);
    res.status(500).json({ error: 'File upload failed' });
  }
});

// 启动服务器
app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});
const express = require('express');
const multer = require('multer');
const OSS = require('@alicloud/oss');
require('dotenv').config();

// 创建 Express 应用
const app = express();
const port = 3000;

// 配置 Multer 内存存储
const storage = multer.memoryStorage();
const upload = multer({ storage });

// 创建 OSS 客户端
const client = new OSS({
  region: 'oss-cn-hangzhou',
  accessKeyId: 'your-access-key-id',
  accessKeySecret: 'your-access-key-id',
  bucket: 'your-bucket-name'
});

// 文件上传路由
app.post('/upload', upload.single('file'), async (req, res) => {
  try {
    if (!req.file) {
      return res.status(400).json({ error: 'No file uploaded' });
    }

    // 生成唯一文件名
    const timestamp = Date.now();
    const extension = req.file.originalname.split('.').pop();
    const objectName = `uploads/${timestamp}.${extension}`;

    // 上传到 OSS
    const result = await client.put(
      objectName,
      req.file.buffer,
      { headers: { 'Content-Type': req.file.mimetype } }
    );

    res.json({
      message: 'File uploaded successfully',
      url: result.url
    });
  } catch (error) {
    console.error('Upload error:', error);
    res.status(500).json({ error: 'File upload failed' });
  }
});

// 启动服务器
app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

程序员小洛文档