func StoreUpload(c appengine.Context, cn context.Context, contentType string, filename string, email string, origin string) (string, string, error) {
uuid, err := UUID()
if err != nil{
return "", "", err
}
filename = uuid + filename[len(filename)-4:]
tokenSource := google.AppEngineTokenSource(cn, storage.ScopeFullControl)
token, err := tokenSource.Token()
if err != nil{
return "", "", err
}
metaBody := []byte("{ \"metadata\": { \"x-goog-meta-uploader\": \""+ email +"\" }}")
req, err := http.NewRequest(
"POST",
fmt.Sprintf("https://www.googleapis.com/upload/storage/v1/b/%s/o?uploadType=resumable&name=upload/%s", models.HYLIGHT_EXTERNAL_BUCKET, filename),
bytes.NewReader(metaBody),
)
req.Header.Set("Authorization", "Bearer " + token.AccessToken)
req.Header.Set("X-Upload-Content-Type", contentType)
req.Header.Set("Content-Type", "application/json; charset=UTF-8")
req.Header.Set("Content-Length", fmt.Sprint(len(metaBody)))
req.Header.Set("Origin", origin)
client := &http.Client{
Transport: &urlfetch.Transport{
Context: c,
Deadline: 20 * time.Second,
},
}
res, err := client.Do(req)
if err != nil{
return "", "", err
}
return res.Header.Get("Location"), filename, err
}
google cloud bucket中的结果将具有正确的video/mp4 mimetype(这是由浏览器决定的),但仍然无法在浏览器上查看。
编辑:
我也尝试过使用chrome扩展名“Postman”在收到一个可恢复的上传链接后上传一个文件,但它的属性在上传到GCS时也会丢失,所以它似乎与将文件上传到GCS时涉及的JS端无关。
我想按照官方文档中提供的示例将一个文件上传到Google云存储 然而,我得到了一个错误: 线程“main”com.google.cloud.storage.StorageException中的异常:获取服务帐户的访问令牌时出错:400个错误请求{“错误”:“无效的授予”、“错误描述”:“无效的JWT:令牌必须是短期令牌(60分钟)并且在合理的时间范围内。请检查JWT声明中的iat和exp值。”位于
我应该做什么才能成功上传图片?任何帮助都将不胜感激。 非常感谢。
我正在寻找将文件上传到存储桶的 。这是因为我有一个匿名用户,某种程度上是一个公开的API密钥。稍后我将实现每个用户的ACL,但现在我只需要它来工作/上传。 现在,我在Amazon Cloud上也做了类似的工作,有一个简单的基于jQuery的小部件,可以上传文件,我只需要输入它们的和bucket名称(很遗憾,这是在中)。 只要一个简单的
packagingOptions{exclude“meta-inf/manifest.mf”exclude“meta-inf/asl2.0”exclude“meta-inf/license.txt”exclude“meta-inf/license”exclude“meta-inf/notice.txt”exclude“meta-inf/license”exclude“meta-inf/depend
我正在考虑是否可以在Windows平台上使用gsutil的命令将文件上传到Google云存储。我在本地电脑上有6个文件夹,每天都有新的pdf文档添加到其中。每个文件夹包含大约2500个文件。所有文件目前都在谷歌存储在各自的文件夹中。现在我主要使用谷歌云存储管理器上传所有的新文件。有没有办法创建一个批处理文件,并安排每天晚上自动运行它,这样它就只抓取今天扫描过的文件,并将其上传到谷歌存储?
我们一直在使用服务,在(AWS)中,我们意外删除了一个目录,因此我们认为它应该在中,但是经过查看,尽管处于打开状态,但它并不存在。