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

谷歌存储上传javascript文件

柳俊逸
2023-03-14

我正在寻找将文件上传到存储桶的绝对最低要求。以及所需的最低代码。

我所掌握的oAuth/API密钥信息最少来自控制台。云谷歌。com/api/credentials/oauthclient/

  • clientId:来自凭证页面的客户端ID

我不确定apiKey是否正确,但从一个示例中使用它不会引发错误:

  // This is triggered after the `client.js` loads
  function handleClientLoad() {
    gapi.client.setApiKey(apiKey);
    window.setTimeout(checkAuth,1);
  }

  function checkAuth() {
    gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, handleAuthResult);
  }

所以,这是第一步,但如果我错了,请纠正我。

现在要处理Auth结果:

  function handleAuthResult(authResult) {
    if (authResult && !authResult.error) {
      makeApiCall();
    }
  }

我有点被卡住了,我正在研究一个例子:https://developers.google.com/api-client-library/javascript/start/start-js

在那里,当到达gapi时,它停止工作。客户加人员,其中未定义人员。这是因为我有一个匿名用户,某种程度上是一个公开的API密钥。稍后我将实现每个用户的ACL,但现在我只需要它来工作/上传。

现在,我在Amazon Cloud上也做了类似的工作,有一个简单的基于jQuery的小部件,可以上传文件,我只需要输入它们的API键和bucket名称(很遗憾,这是在PHP中)。

只要一个简单的

我知道桶名。存储古格里皮斯。com是文件的结尾,当我手动上传图像时,它就起作用了。

我现在正在使用谷歌客户端寻找绝对最小的代码段,最好是javascript,所以使用类似的东西(我在另一个示例中找到):

gapi.client.request({
    'path': '/upload/storage/' + API_VERSION + '/b/' + BUCKET + '/o',
    'method': 'POST',
    'params': {'uploadType': 'media'}
    'headers': {
        'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'
     }

我需要API_版本?如何找到要使用的路径?我知道我的bucket名字,但是upload/storage/来自哪里?和/b/?(尽管https://cloud.google.com/storage/docs/json_api/v1/how-tos/upload显示我需要它)示例使用了带有边界的标题,但我找不到任何关于它的信息,我可能也不需要它。问题是我找不到任何最低要求的标题。我遇到了“x-goog-acl”:“public read”,这需要在标题中吗?

总之,我想回答的问题是:

  • 如果alluser访问权限设置为Owner(我知道,这不是最好的主意,将来会改变)

我希望我的问题很清楚,我基本上不知道从哪里开始/找到正确的代码示例。尽管这可能与谷歌javascript客户端api处于测试版这一事实有关。。


共有1个答案

林魁
2023-03-14

如果allUsers access设置为Owner(我知道,这不是最好的主意,这将在未来发生变化),我至少需要上传哪些头到bucket中。

你是对的!这不是一个好主意。如果匿名用户拥有您的存储桶,这意味着他们可以删除其中的任何对象,覆盖现有对象,否则会造成昂贵的恶作剧。尽管如此,您问题的答案:

<form action="https://storage.googleapis.com/YOUR_BUCKET_NAME" 
      method="post" enctype="multipart/form-data">
  <input name="key" type="text" value="objectName.txt" /><br/>
  <input name="file" type="file" /><br/>
  <input type="submit" value="Upload!" />
</form>

这是上传对象所需的绝对最小值。请注意,它不会将你重定向到任何地方,也不会表示成功。为此,您需要使用success_action_redirect参数,并要求绝对最小值。

 类似资料:
  • 我想按照官方文档中提供的示例将一个文件上传到Google云存储 然而,我得到了一个错误: 线程“main”com.google.cloud.storage.StorageException中的异常:获取服务帐户的访问令牌时出错:400个错误请求{“错误”:“无效的授予”、“错误描述”:“无效的JWT:令牌必须是短期令牌(60分钟)并且在合理的时间范围内。请检查JWT声明中的iat和exp值。”位于

  • 我应该做什么才能成功上传图片?任何帮助都将不胜感激。 非常感谢。

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

  • 我正在考虑是否可以在Windows平台上使用gsutil的命令将文件上传到Google云存储。我在本地电脑上有6个文件夹,每天都有新的pdf文档添加到其中。每个文件夹包含大约2500个文件。所有文件目前都在谷歌存储在各自的文件夹中。现在我主要使用谷歌云存储管理器上传所有的新文件。有没有办法创建一个批处理文件,并安排每天晚上自动运行它,这样它就只抓取今天扫描过的文件,并将其上传到谷歌存储?

  • 我们一直在使用服务,在(AWS)中,我们意外删除了一个目录,因此我们认为它应该在中,但是经过查看,尽管处于打开状态,但它并不存在。

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