Node.js 如何使用post方法从前端接收文件并将其上载到google云?
我正试图上传一个文件到谷歌存储桶。该文件将使用post方法和表单数据发送到nodejs后端路由。我已经阅读了关于上传文件的谷歌存储文档 我不知道如何接收文件并将其分配给filename变量,以便将其上载到google存储桶。就像这样Node.js 如何使用post方法从前端接收文件并将其上载到google云?,node.js,reactjs,google-cloud-storage,multer,Node.js,Reactjs,Google Cloud Storage,Multer,我正试图上传一个文件到谷歌存储桶。该文件将使用post方法和表单数据发送到nodejs后端路由。我已经阅读了关于上传文件的谷歌存储文档 我不知道如何接收文件并将其分配给filename变量,以便将其上载到google存储桶。就像这样 const {Storage} = require('@google-cloud/storage'); // Creates a client const storage = new Storage(); test: async (req, res, next)
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
test: async (req, res, next) => {
const filename = req.body.file
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const filename = 'Local file to upload, e.g./local/path/to/file.txt';
await storage.bucket(bucketName).upload(filename, {
gzip: true,
metadata: {
cacheControl: 'public, max-age=31536000',
},
});
console.log(`${filename} uploaded to ${bucketName}.`);
}
}
我从库的示例中创建了下面的代码,用于处理表单数据和库的代码片段。事实上,我对它进行了测试,效果非常好,您可能需要自定义文件名等
const express=require('express');
常量强大=需要(“强大”);
const{Storage}=require('@googlecloud/Storage');
const bucket='yourBucketName';
异步函数上传文件(bucket,文件名){
常量存储=新存储();
const params={元数据:{cacheControl:'public,max age=31536000'};
等待存储.bucket(bucket).upload(文件名,参数);
log(`${filename}上传到${bucket}.`);
}
常量app=express();
应用程序获取(“/”,(请求,请求)=>{
res.send(`
使用“express”
npm软件包
文本字段标题:
文件:
`);
});
app.post('/api/upload',(请求、回复、下一步)=>{
const form=可怕的();
解析(请求,(错误,字段,文件)=>{
如果(错误){
下一个(错误);
返回;
}
让imgPath=files.someExpressFiles.path;
上传文件(bucket,imgPath).catch(console.error);
res.json({fields,files});
});
});
应用程序监听(8080,()=>{
console.log('正在侦听的服务器http://localhost:8080 ...');
});
gg文档解决方案仅在开发中有效。
如果您在生产环境中,您的NodeJ将不知道文件路径
因此,遵循以下步骤可能会对您有所帮助:
步骤1:将图像编码到base64并发送到后端
步骤2:从后端,您必须解码此base64并将其上载到gg云存储
此链接很有帮助:文件上传后需要调用此函数。为此,您可以使用文件上传包。一个很好的例子是:实际上,我正在node.js部分工作,在那里我将使用post方法接收文件,并从请求部分将其上传到google存储桶。请参阅本教程。你会得到上下文的,我也看到了。事实上,我试着在互联网上到处找。实际上,发送文件只是整个表单的一部分。我将收到json+文件。我将把文件保存在云存储中,该存储的url将与其他表单详细信息一起保存在我的mongodb集合中。