Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用post方法从前端接收文件并将其上载到google云?_Node.js_Reactjs_Google Cloud Storage_Multer - Fatal编程技术网

Node.js 如何使用post方法从前端接收文件并将其上载到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)

我正试图上传一个文件到谷歌存储桶。该文件将使用post方法和表单数据发送到nodejs后端路由。我已经阅读了关于上传文件的谷歌存储文档

我不知道如何接收文件并将其分配给filename变量,以便将其上载到google存储桶。就像这样

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集合中。