使用Json api下载Google Storage Media

时间:2013-02-19 16:23:23

标签: javascript google-cloud-storage

我正在尝试使用Javascript json api从Google Storage下载文件。我可以使用下面的代码来检索对象信息,但是我不知道如何获得实际的媒体。我熟悉Java库方法getMediaHttpDownloader,但我没有看到JS中的等价物。任何帮助将不胜感激!

gapi.client.storage.objects.get({"bucket":"bucketName","object":"objectName"});

3 个答案:

答案 0 :(得分:3)

Javascript库目前不支持直接下载媒体。你仍然可以访问数据,但你必须以另一种方式访问​​它。

根据您的网站所在的域以及您正在阅读的存储桶,您需要设置CORS:https://developers.google.com/storage/docs/cross-origin

然后,您需要直接通过XML API请求对象。例如,你可以这样做:

var accessToken = gapi.auth.getToken().access_token;
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://'+bucket+'.storage.googleapis.com/'+object);
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xhr.send();

答案 1 :(得分:2)

我最终没有使用api(不确定你可以使用api下载,感兴趣,如果你知道如何)并使用XmlHttpRequest代替。要做到这一点,我必须为我的谷歌存储桶设置CORS,以允许我的网站跨域访问。以下是我的代码:

var myToken = gapi.auth.getToken();
    var req = new XMLHttpRequest;

    req.open('GET','https://storage.googleapis.com/bucket/object',
                    true);
    req.setRequestHeader('Authorization', 'Bearer ' + myToken.access_token);

    req.send(null);

答案 2 :(得分:0)

我使用gapi和jQuery做到了。

在我的情况下,对象是公开的。 (必须检查存储浏览器中的 pulbic link )。如果您不希望您的对象公开,请使用$ .post而不是$ .get,并将assessment_token作为标题提供与其他答案中完全相同的内容。
Storage.getObjectMedia检索对象元数据。 var Storage = function() {}; Storage.bucket = 'mybucket'; Storage.object = 'myfolder/myobject'; //object name, got by gapi.objects.list Storage.getObjectMedia = function(object, callback) { function loadObject(objectInfo) { var mediaLink = objectInfo.mediaLink; $.get(mediaLink, function(data) { //data is actually object content console.log(data); callback(data); }); } Storage.getObjectInfo(object, loadObject); }; Storage.getObjectInfo = function(object, callback) { var request = gapi.client.storage.objects.get({ 'bucket' : Storage.bucket, 'object' : Storage.object }); request.execute(function(resp) { console.log(resp); callback(resp); }); }; 检索对象内容。

mediaLink

当我们需要下载对象的内容时,这也是相对罕见的情况。在大多数情况下,存储在存储中的对象是媒体文件,如图像和声音,然后我们所需要的只是src,必须插入到img适当dom元素的属性值audio或{{1}})。