繁体   English   中英

使用 multer 和 Node.js 将多个文件上传到 Google Cloud

[英]Uploading multiple files to Google Cloud using multer and Node.js

我正在尝试使用 Node.js 和 multer 将多个文件上传到 Google Cloud 存储桶。 它适用于multer.single function 但我不知道如何一次上传多个图像。

const bucket = gc.bucket('still-cover');
// Multer is required to process file uploads and make them available via
// req.files.
const multer = Multer({
  storage: Multer.memoryStorage(),
  limits: {
    fileSize: 5 * 1024 * 1024, // no larger than 5mb, you can change as needed.
  },
});

Router.post('/test/upload',multer.array('files',5),async(req,res)=>{
  if (!req.files) {
    res.status(400).send('No file uploaded.');
    return;
  }
      
  // Create a new blob in the bucket and upload the file data.

  const blob = bucket.file(req.files.originalname);
  const blobStream = blob.createWriteStream();
  blobStream.on('finish', res => {});

  blobStream.on('finish', () => {
    // The public URL can be used to directly access the file via HTTP.
    const publicUrl = `https://storage.googleapis.com/${bucket.name}/${blob.name}`
   
    res.status(200).send(publicUrl);
  });

  blobStream.end(req.files.buffer);
});

您可以使用multer.array('files', numberofiles)multer.any()将文件上传到您的 Google Cloud Storage Bucket。 您可以使用以下代码使用 Multer 上传多个文件:

const express = require('express');
const path = require('path');
const cors = require('cors');
const Multer = require('multer');
const bodyParser = require('body-parser');

const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

const bucket = storage.bucket('YOUR_BUCKET_NAME')

const PATH = './public/';

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

const multer = Multer({
    storage: Multer.memoryStorage(),
    limits: {
      fileSize: 5 * 1024 * 1024, // no larger than 5mb, you can change as needed.
    },
  });


app.get('/', function(req, res){
    res.json({
        json: "json"
    });
})

// You can also use multer.array('data', numberofFiles)

app.post('/', multer.any(), function(req, res) {
    console.log(req.files);
    var counter = 0;
    if (!req.files) {
        res.status(400).send('No file uploaded.');
        return;
      }
      
    //  Create a new blob in the bucket and upload the file data.
    req.files.forEach((fil) => {
        const blob = bucket.file(fil.originalname);
        const blobStream = blob.createWriteStream();


        blobStream.on('finish', () => {
            counter+=1
            // The public URL can be used to directly access the file via HTTP.
            const publicUrl = `https://storage.googleapis.com/${bucket.name}/${blob.name}`

            if(counter>=2){
                res.status(200).send(publicUrl);
            }
        
        });
        
        blobStream.end(req.files.buffer);
    });
    
    
});

app.listen(3000, function () {
    console.log("Working on port 3000");
});


上线blobStream.end(req.files.buffer); files.buffer替换为fil.buffer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM