node js用multer上传图像并保存到firebase存储中

问题描述 投票:0回答:1

我的ejs前端代码如下

<form action='/powerLink' method='post' enctype='multipart/form-data'> <input type='file' name='file'> <input type='submit' value='fileupload'> </form>

和我的js代码,接收文件如下

var storagee=firebase.storage().ref("test");
 app.post("/powerLink", multer.single('file'),function(req,res){
  let file = req.file;
  if(file){
    console.log(file);
     storage.put(file);
  }

当我console.log(文件)它的价值如下{栏位名称:'

file',
  originalname: 'appiicon.png',
  encoding: '7bit',
  mimetype: 'image/png',
  buffer:
   <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 e1 00 00 00 e1 08 06 00 00 00 3e b3 d2 7a 00 00 00 19 74 45 58 74 53 6f 66 74 77 61 72 65 00 ... >,
  size: 15966 }

我以为它可以直接保存到我的存储和文件夹“ test”,然后将图像保存到该文件夹​​。但是什么也没发生。

我无法猜出不将图像文件上传到Firebase上的存储的原因是什么

node.js firebase firebase-storage ejs
1个回答
0
投票
我已经在使用Firebase admin sdk和类似的东西(打字稿)之前完成了此操作:

async function uploadFile(file: Express.Multer.File, directory: string, fileName: string): Promise<string> { const bucket = firebaseAdmin.storage().bucket(); const fullPath = `${directory}/${fileName}`; const bucketFile = bucket.file(fullPath); await bucketFile.save(file.buffer, { contentType: file.mimetype, gzip: true }); const [url] = await bucketFile.getSignedUrl({ action: "read", expires: "01-01-2050" }); return url; }

© www.soinside.com 2019 - 2024. All rights reserved.