如何在Node.js中使用Express直接上传客户端文件到MinIO?

如何在Node.js中使用Express直接上传客户端文件到MinIO?

在 Node.js 中使用 MinIO 的前提是已经安装并进行了相关设置。在此基础上,需要引入 MinIO 的 SDK,通过它实现客户端文件上传。

以下代码示例演示了如何通过 Express 直接从客户端上传文件到 MinIO:

const express = require('express');
const app = express();
const port = 3000;
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

const Minio = require('minio');

const minioClient = new Minio.Client({
  endPoint: 'minio.example.com',
  port: 9000,
  useSSL: true,
  accessKey: 'YOUR-ACCESSKEYID',
  secretKey: 'YOUR-SECRETACCESSKEY',
});

app.post('/upload', (req, res) => {
  if (!req.files) {
    res.status(400).send('No file uploaded');
  } else {
    const file = req.files.file;
    const metaData = {
      'Content-Type': file.mimetype,
    };
    const stream = Buffer.from(file.data, 'binary');

    minioClient.putObject(
      'my-bucket',
      file.name,
      stream,
      stream.length,
      metaData,
      (err, etag) => {
        if (err) return console.log(err);
        console.log(etag);
        res.status(200).send('File uploaded');
      },
    );
  }
});

app.listen(port, () => console.log(`Example app listening on port ${port}!`));

在这个例子中,“/upload” 路由接收客户端 POST 请求,将文件上传到 MinIO 的“my-bucket”存储桶中。要使用这个示例,您需要使用 Multer 中间件在客户端获取上传的文件并将其作为“file”属性上传。

这个例子很简单,但是您可以在其中添加身份验证和其他安全性措施以防范潜在的风险。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。

posted on 2024-04-01 17:00  漫思  阅读(159)  评论(0编辑  收藏  举报

导航