当前位置: 首页 > 知识库问答 >
问题:

如何从前端使用post方法接收文件并将其上传到谷歌云?

红富
2023-03-14

我正试图上传一个文件到谷歌存储桶。该文件将使用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}.`);
    }
}

共有1个答案

孙熠彤
2023-03-14

下面的代码是我从node library的示例中创建的,用于处理表单数据和nodejs存储库的代码片段。事实上,我对它进行了测试,效果非常好,您可能需要自定义文件名等。

const express = require('express');
const formidable = require('formidable');
const {Storage} = require('@google-cloud/storage');
const bucket = 'yourBucketName';

async function uploadFile(bucket, filename) {
  const storage = new Storage();
  const params = {metadata: {cacheControl: 'public, max-age=31536000'}};
  await storage.bucket(bucket).upload(filename, params);
  console.log(`${filename} uploaded to ${bucket}.`);
}

const app = express();

app.get('/', (req, res) => {
  res.send(`
    <h2>With <code>"express"</code> npm package</h2>
    <form action="/api/upload" enctype="multipart/form-data" method="post">
      <div>Text field title: <input type="text" name="title" /></div>
      <div>File: <input type="file" name="someExpressFiles" multiple="multiple" /></div>
      <input type="submit" value="Upload" />
    </form>
  `);
});

app.post('/api/upload', (req, res, next) => {
  const form = formidable();

  form.parse(req, (err, fields, files) => {
    if (err) {
      next(err);
      return;
    }
    let imgPath = files.someExpressFiles.path;
    uploadFile(bucket, imgPath).catch(console.error);
    res.json({ fields, files });
  });
});

app.listen(8080, () => {
  console.log('Server listening on http://localhost:8080 ...');
});
 类似资料:
  • 我正在尝试使用谷歌云存储JSON API将图像上传到谷歌云存储桶中。文件正在上载,但没有显示任何内容。 我正在通过以下方式上载图像:- 图像1 看图片1,文件上传成功。但当我点击它查看它时,它显示如图2所示。 图像2

  • 我正试图使用Python应用编程接口将文件从笔记本中的数据实验室实例上传到我的谷歌存储桶,但我无法解决这个问题。谷歌在其留档中提供的代码示例似乎在数据实验室中不起作用。我目前正在使用gsutil命令,但想了解如何在使用Python应用编程接口时做到这一点。 文件目录(我想上传checkpoints文件夹中的python文件): 当前代码: 目前的工作解决方案:

  • 本文向大家介绍PHP使用curl模拟post上传及接收文件的方法,包括了PHP使用curl模拟post上传及接收文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP使用curl模拟post上传及接收文件的方法。分享给大家供大家参考,具体如下: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《php日期与时间用法总结》、《php面向对象程序设计入

  • 我正在尝试上传文件到谷歌存储在多块但签名的URL。 以下是我正在执行的步骤: 使用node.js创建可恢复的上载URL 示例URL: 使用这些标头: HTTPS响应: 使用这些标头: HTTPS响应:包含数据: 根据文档,上述响应应该是,而不是。 我对这些API调用做错了什么?

  • 我目前面临的问题与谷歌云存储, 我能够下载对象上传到谷歌云存储,但当天晚些时候,我开始得到的错误,因为"这个网站无法到达" 我在c#中以编程方式创建了一个bucket,代码如下: 因此,创建存储桶的设置如下: 默认存储类别:多地区 位置:美国(美国多个地区) 公共访问:每个对象 生命周期:无 访问控制模型:存储桶策略

  • springboot接收前端上传到后端的文件时,在controller层内大多数使用的是MultipartFile进行接收的,当使用file进行接收时会报错 有大佬知道为啥不能用file接收文件吗?