StreetView Publish API JavaScript Загрузить фото
Я пытаюсь загрузить фотографию из JavaScript с помощью API-интерфейса публикации StreetView, и кажется, что все, что я пытаюсь сделать, терпит неудачу... в настоящее время у меня есть 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 запроса... оба являются ОПЦИЯМИ и состоянием 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);