StreetView Publish API JavaScript上传照片

时间:2017-11-21 13:50:08

标签: google-streetview-publish

我正在尝试使用StreetView Publish API从JavaScript上传照片,似乎我尝试的所有内容都失败了...目前我有uploadUrl,我需要发送带有实际图像数据的帖子请求

这是我最终做的

var input = document.querySelector('input[type="file"]').files;
var reader = new FileReader();
reader.onload = function(){
      var dataURL = reader.result;
      var xhr = new XMLHttpRequest();
      xhr.open("POST", window.uploadUrl, true);
      xhr.setRequestHeader("Authorization", gapi.client.getToken().token_type + ' ' + gapi.client.getToken().access_token);
      xhr.setRequestHeader("Content-Type", "image/jpeg");
      xhr.setRequestHeader("X-Goog-Upload-Protocol", "raw");
      xhr.setRequestHeader("X-Goog-Upload-Content-Length", dataURL.length );
      xhr.onreadystatechange = function() {//Call a function when the state changes.
        if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
            console.log(xhr);
        }
      }
      xhr.send(dataURL);
    };
reader.readAsDataURL(input[0]);

我得到的答案如下: 无法加载

  

https://streetviewpublish.googleapis.com/media/user/.../photo/ ...:   预检的响应无效(重定向)

有人可以建议任何可能的解决方案吗?

感谢

更新 从我看到...当我试图上传图像时,生成2个请求...两个是OPTIONS和302状态,并且没有一个有我想要发送的标题...主要是访问令牌

var xhr = new XMLHttpRequest();
xhr.open("POST", window.uploadUrl + "?key=...", true);
xhr.setRequestHeader("Authorization", gapi.client.getToken().token_type + ' ' + gapi.client.getToken().access_token);
xhr.setRequestHeader("Authorization", gapi.client.getToken().access_token);
xhr.setRequestHeader("Content-Type", 'image/jpeg');
xhr.setRequestHeader("X-Goog-Upload-Protocol", "raw");
xhr.setRequestHeader("X-Goog-Upload-Content-Length", dataURL.length );
xhr.onreadystatechange = function() {
   if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
      console.log(xhr);
   }
}
xhr.send(dataURL);

0 个答案:

没有答案