相关疑难解决方法(0)

Google Cloud Storage Signed URLs -- 如何指定最大文件大小?

目标

我们希望用户能够将图像上传到 Google Cloud Storage。

问题

我们可以通过我们的服务器作为中间人间接实现这一点——首先,用户上传到我们的服务器,然后我们的特权服务器可以上传到 Cloud Storage。

但是,我们认为这不必要地慢,而是希望用户直接上传到 Cloud Storage。

建议的解决方案

为了实现直接上传,我们在我们的服务器上生成一个签名 URL。签名 URL 指定过期时间,并且只能与 HTTP PUT 动词一起使用。用户可以请求签名 URL,然后 - 仅在有限的时间内 - 将图像上传到签名 URL 指定的路径。

解决方案的问题

有没有办法强制最大文件上传大小?显然,当我们期望 <1MB 文件时,我们希望避免用户尝试上传 20GB 文件。

看起来这是一个明显的漏洞,但我不知道如何在仍然使用 SignedURL 的同时解决它。

似乎有一种方法可以使用 Policy Documents ( Stack Overflow answer )来做到这一点,但这个问题现在已经超过 2 年了。

upload http google-cloud-storage pre-signed-url google-cloud-platform

10
推荐指数
3
解决办法
2554
查看次数

Google云端存储Javascript使用情况

我正在尝试使用JSON API将图像上传到Google云端存储上的存储桶中,使用Javascript示例: Api Javascript示例

我可以上传图片,但它要求我登录我的谷歌帐户.

示例有一个授权按钮,据我所知,它管理OAuth凭据.

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

问题是:

我想在没有弹出屏幕的情况下进行身份验证,这意味着无需登录Google.因为我的客户端不知道电子邮件或密码,我希望它是自动的.

我怎样才能做到这一点?

谢谢!

----------------------------- UPDATE --------------------

因此,按照布兰登的回答,我做了以下事情:

我创建了我的政策文件并签名如下:

var http = require('http');
var fs = require('fs');
var crypto = require('crypto');
var express = require('express');
var app = express();
var p12ToPem = require("./node_modules/p12-to-pem/p12ToPem.js");
var p12File = fs.readFileSync("./KEY.p12");
var pemKey = p12ToPem(p12File, "notasecret");
 var policyJson={"expiration": "2050-06-16T11:11:11Z",
"conditions": [["starts-with", "$key", "" ],
{"acl": "bucket-owner-read" },
{"bucket": "my-bucket'name"},
{"success_action_redirect":"http://www.example.com/success_notification.html" },
 ["eq", "$Content-Type", …
Run Code Online (Sandbox Code Playgroud)

javascript cloud storage json google-cloud-storage

7
推荐指数
1
解决办法
1775
查看次数