节点js使用Multer上传图像并保存到FireBase存储 [英] node js uploading image with multer and save to firebase storage

查看:20
本文介绍了节点js使用Multer上传图像并保存到FireBase存储的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的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存储的原因是什么

推荐答案

我在使用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;
}

这篇关于节点js使用Multer上传图像并保存到FireBase存储的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆