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

谷歌云存储:上传的媒体文件已使用XML API损坏

戚承业
2023-03-14

我只是上传文件到谷歌云存储使用签名网址与Ajax上传。

function uploadToGCS(url,file,callback) {
  var ajax = new XMLHttpRequest();

  //PROGRESS HANDLER
  ajax.upload.addEventListener("progress", function(event) {
    if (event.lengthComputable) {
      var percent = ((event.loaded / event.total) * 100);
      if(callback != null) {
        callback(0,Math.round(percent));
      }
    }

  }, false);

  //COMPLETE HANDLER
  ajax.addEventListener("load", function(event) {
    if(callback != null) {
      callback(1,0);
    }
  }, false);

  //ERROR HANDLER
  ajax.addEventListener("error", function(event) {
    if(callback != null) {
      callback(-1,0);
    }
  }, false);

  //ABORT HANDLER
  ajax.addEventListener("abort", function(event) {
    if(callback != null) {
      callback(-2,0);
    }
  }, false);

  ajax.open("PUT", url,true);
  var fd = new FormData();
  fd.append('file', file);

  ajax.setRequestHeader('Content-Type', file.type);    
  ajax.send(fd);
}

已经完全上传了。但尝试从Bucket下载文件时,文件会像媒体文件一样损坏,否则pdf、txt文件工作正常。有什么建议请建议我谢谢。

共有1个答案

司寇照
2023-03-14

通过不使用表单数据直接发送文件解决了此问题。

这样地:

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

  • 我正在评估在我的新项目中使用GCP,然而,我仍然试图弄清楚如何实现以下特性以及它将有什么样的成本。 什么是最好的策略来服务用户从GCP上传的媒体,同时让用户完全控制谁将能够访问它们? 作为一个用户,我想上传某种媒体(如:图像,视频等)以私人和安全的方式。 媒体必须由我和我授权访问的特定用户子组可见。 任何人都不能访问媒体,即使他获得了URL。 据我所知,与“访问控制”相关的特性大多是在项目和组织级

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

  • 我有一个谷歌云存储(GCS)桶标记为公共。我使用v4签名的URL将图像上传到这个公共桶。我可以通过HTTP头看到GCS缓存图像长达1小时。但是,当我上传相同图像的较新版本(具有相同的文件名)时,GCS不会使缓存无效,仍然为这些图像的较旧版本服务。当这些映像的较新版本上载到GCS时,如何确保缓存无效?必须使用v4签名的URL。

  • 我正在寻找将文件上传到存储桶的 。这是因为我有一个匿名用户,某种程度上是一个公开的API密钥。稍后我将实现每个用户的ACL,但现在我只需要它来工作/上传。 现在,我在Amazon Cloud上也做了类似的工作,有一个简单的基于jQuery的小部件,可以上传文件,我只需要输入它们的和bucket名称(很遗憾,这是在中)。 只要一个简单的