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

使用NodeJS本地将文件上传到Google Cloud storage

沃盛
2023-03-14

我正在尝试用我的服务帐户在我的机器上本地使用简单的代码上传一个图片到Google云存储:

const storage = require('@google-cloud/storage');
const fs = require('fs');
const gcs = storage({
    projectId: 'ID',
    keyFilename: 'KEYNAME'
});
var bucket = gcs.bucket('BUCKET NAME');

bucket.upload('hiking-image.jpg', function(err, file) {
    if (err) throw new Error(err);
});

if (err) throw new Error(err);
         ^

然而,我得到了下面的错误消息。是Google Cloud API只能在部署到App Engine上时工作,还是我在这里做错了什么?我能够使用相同的服务帐户使Google Vision API在本地工作。

Error: ApiError: Forbidden
    at /Users/user/google-cloud/upload/upload.js:10:20
    at Pumpify.<anonymous> (/Users/user/node_modules/@google-cloud/storage/src/bucket.js:1218:9)
    at emitOne (events.js:101:20)
    at Pumpify.emit (events.js:188:7)
    at Pumpify.Duplexify._destroy (/Users/user/node_modules/duplexify/index.js:184:15)
    at /Users/user/node_modules/duplexify/index.js:175:10
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

共有1个答案

唐元青
2023-03-14

您需要为您的服务帐户赋予适当的角色。转到google cloud控制台,菜单“IAM和Admin”

  1. 创建服务帐户
  2. 转到IAM面板
  3. 编辑刚才创建的服务帐户的角色。选择cloud storage并使其成为一个完整的管理员,但最好的方法是根据您的需要使其成为存储对象的创造者或读取者。
 类似资料:
  • 问题内容: 尝试将文件上传到S3存储桶时遇到问题。一切正常,除了我的文件参数似乎不合适。我正在使用Amazon S3 SDK从Node.js上载到S3。 这些是我的路线设置: 这是items.upload()函数: 将param 设置为类似字符串的效果很好。根据doc,param必须获取 (缓冲区,类型数组,Blob,字符串,ReadableStream)对象数据。 但是,上传文件对象失败,并显示

  • 我的upload.js文件包含以下代码: 它通过终端工作,但我如何调用它在表单提交按钮点击或只是从不同的文件? 当我尝试的时候,它给我: 无法读取未定义的属性“prototype” 我对NodeJs还很陌生,我真的不知道该怎么做。 Google文档对我一点帮助都没有:/

  • 我正在使用lambda nodejs将文件上传到ftp服务器。 上传文件的源代码: index.js文件: 运行后的日志: 回应: 零 请求ID: “9c8e1701-ad54-42eb-8dc6-bbed77bc9b41” 函数日志: 开始请求id:9c8e 1701-ad54-42e b-8dc 6-bbed 77 BC 9 b 41版本:$最新 结束请求ID:9c8e1701-ad54-42

  • 问题内容: 尝试使用Google Collaboratory通过这种方式上传本地文件: 我收到以下错误: 仅当在当前浏览器会话中执行了单元格时,上载小部件才可用。请重新运行此单元格以启用。 我重新运行该单元,但是它不起作用… 问题答案: 听起来您的浏览器中可能禁用了 第三方Cookie ,请参阅https://github.com/googlecolab/colabtools/issues/17。

  • 问题内容: 我必须使用Python脚本自动将文件夹上传到FTP。我可以上传单个文件,但不能上传包含子文件夹和文件的文件夹。我做了很多搜索,但是失败了。有人可以帮我吗?提前致谢。 问题答案: 基本上,您需要使用os.walk()来获取这些文件并进行传输。 这是我为自己编写的脚本,可以完成您的大部分要求。我是很久以前写的,所以如果我再次写它,我可能会做不同的事情,但是我从中得到了很多利用。 它导入ps

  • 我在尝试将文件上传到我的S3存储桶时遇到了问题。一切正常,除了我的文件参数似乎不合适。我正在使用Amazon S3 sdk从nodejs上传到s3。 以下是我的路线设置: 这是个项目。upload()函数: 将“Body”参数设置为类似“hello”的字符串可以正常工作。根据doc,Body必须获取(Buffer、类型化数组、Blob、String、ReadableStream)对象数据。但是,上