Статус загрузки файла API Google Диска 0 - PullRequest
0 голосов
/ 19 февраля 2020

Я использую Google Drive javascript api V2 для загрузки файлов. В течение некоторого времени это работало просто отлично, но сегодня происходит сбой, возвращая статус 0 с пустым текстом ответа. Глядя на сетевые вызовы, я вижу, что я успешно аутентифицируюсь и перехожу к нужным папкам и получаю список файлов, но он больше не загружает эти файлы.

Глядя глубже, я вижу первоначальный ответ для каждого загружаемого файла возвращается статус 307 (временное перенаправление) и местоположение перенаправления в заголовке ответа. Браузер автоматически обрабатывает местоположение с новым заголовком запроса, но я не получаю ответ с каким-либо контентом, скорее просто ошибка со статусом 0.

Есть ли конкретная c причина для статуса 307 и Есть ли особый способ их обработки?

Этот код используется для загрузки:

    // Download file contents
    downloadFile: function ( fileItem, callback ) {
        var me = this,
            accessToken,
            xhr;

        if ( fileItem.downloadUrl ) {
            accessToken = gapi.auth.getToken().access_token;
            xhr = new XMLHttpRequest();
            xhr.onerror = function () {
                callback( { error: { code: xhr.status, message: xhr.statusText } } );
            };
            xhr.open( 'GET', fileItem.downloadUrl, true );
            xhr.setRequestHeader( 'Authorization', 'Bearer ' + accessToken );
            xhr.overrideMimeType( "application/json" );
            xhr.onreadystatechange = function () {
                var DONE = this.DONE || 4;
                if ( xhr.readyState === DONE ) {
                    if ( xhr.status === 200 ) {
                        callback( xhr.responseText );
                    } else {
                        callback( { error: { code: xhr.status, message: xhr.statusText } } );
                    };
                };
            };
            xhr.send();
        } else {
            callback( { error: { code: "?", message: "Downloaded URL not specified" } } );
        };
    },

1 Ответ

0 голосов
/ 21 февраля 2020

Я закрываю этот вопрос, несмотря на отсутствие разрешения. Я обновил свой код, чтобы использовать v3 API-интерфейса Google Диска, и заставил его работать с этим.

Странно, если я использовал HTTP-запрос Url 'https://www.googleapis.com/drive/v3/files/<fileId>', он все равно не работал, но если я использовал команда:

gapi.client.drive.files.get( {
        'fileId': fileItem.id,
        'alt': 'media',
        'mimeType': fileItem.mimeType
    });

все работает нормально.

Не уверен, что Google сделал, так как мой предыдущий код работал в течение нескольких лет без каких-либо изменений с моей стороны, но по крайней мере я вернулся и снова работает.

...