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

在可恢复上传谷歌云存储中丢失文件属性

柳逸春
2023-03-14

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)中,我们意外删除了一个目录,因此我们认为它应该在中,但是经过查看,尽管处于打开状态,但它并不存在。