gpt4 book ai didi

node.js - 如何使用multer和NodeJS将图像上传到GCS存储桶?

转载 作者:行者123 更新时间:2023-12-02 16:37:43 29 4
gpt4 key购买 nike

我在将本地镜像上传到我的 Google 云存储时遇到问题。

我已经尝试过两种方法。第一个是用multer上传的

var storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, './uploads/')
},
filename: (req, file, cb) => {
cb(null, file.fieldname + '-' + Date.now())
}
});
var upload = multer({storage: storage}).single('image');

app.post('/upload',function(req,res,next){
upload(req,res,(err) => {
if(err){
console.log(err)
}else{
console.log(req.file)
}
})

})

然后,我直接尝试了GCS

var bucket = admin.storage().bucket('mybucket')
app.post('/upload',function(req,res,next){
bucket
.save(file)
.then(() => {



})

对于这两种解决方案,req.files总是undefinedreq.body是这样的缓冲区:

<Buffer 2d 2d 2d 2d ...>

当我尝试将此缓冲区保存到我的 GCS 存储桶时,我的存储桶中创建了 .jpg/png 文件,但该文件已损坏。

我正在浏览网页寻找解决方案,但没有找到任何可以帮助我克服这种情况的方法。

有什么建议吗?

最佳答案

如果您有其他表单值,您需要 multer、multer-google-storage,当然还有 bodyParser。您需要在 multipart/form-data 中发送数据

在您的 .env 文件中

GCS_BUCKET = <bucket name>
GCLOUD_PROJECT = <project id>
GCS_KEYFILE = <key file location>

您可以从 GCP Console>您的项目>我是和管理员>服务帐户下载 key 文件

在你的路线

const multer = require('multer');
const multerGoogleStorage = require("multer-google-storage");

var uploadHandler = multer({
storage: multerGoogleStorage.storageEngine()
});

router.post('/', uploadHandler.single('image'), function (req, res, next) {
const body = req.body;
res.json({fileName: req.file.filename});
res.end();

}

这会将文件存储到 GCS,名称为 [random-string- generated-by-gcs]_[带扩展名的文件名]。同样可以通过req.file.filename在路由下访问。

Documentation

关于node.js - 如何使用multer和NodeJS将图像上传到GCS存储桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53529947/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com