Скачать файл на сервер прямо с Google Диска в php

Я хочу напрямую передавать файл с Google Диска на свой сервер, когда любой пользователь выбирает файл из Google Drive Picker. Я использую следующий код, но файл не загружается в мою конкретную папку при использовании следующего кода.

Функция обратного вызова:

function onPickerAction(data) {
    if (data.action === google.picker.Action.PICKED) {
        var id = data.docs[0].id;
        var request = new XMLHttpRequest();
        request.open('GET', 'https://www.googleapis.com/drive/v2/files/' + id);
        request.setRequestHeader('Authorization', 'Bearer ' + gapi.auth.getToken().access_token);
        request.addEventListener('load', function() {
            var item = JSON.parse(request.responseText);
            console.log(item);
            downloadFile(item);
        });
        request.send();
    }
} 

Функция для загрузки файла:

function downloadFile(item) {
    var request = new XMLHttpRequest();
    var mimeType = item['mimeType'];
    if (typeof item.exportLinks != 'undefined') {
        if (mimeType == 'application/vnd.google-apps.spreadsheet') {
            mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
        }
        url = item['exportLinks'][mimeType];
        link = url;
    } else {
        lien = item['downloadUrl'].split("&");
        link = lien[0] + '&' + lien[1];
        url = item['downloadUrl'];
    }
    title = item['title'];
    type = mimeType;
    filesize = item['fileSize'];
    fileext = item['fileExtension'];
    id = item['id'];
    var datatable = [url, title, type, filesize, fileext,id];
    document.getElementById("myddlink").href=link; 
    request.open("POST", "downloadfile.php?" + datatable, true);
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request.send("datatable=" + datatable);
}

PHP-файл:

$upload_path='upload_folder';
    if (isset($_POST['exportFormat'])) {
            $pieces = explode(",", $_POST['exportFormat']);
            $url = $_POST['datatable'] . '&exportFormat=xlsx';
            $title = $pieces[1];
            $type = $pieces[2];
            $fileext = $pieces[0];
            $fileId = $pieces[5];
        }else {
            $url = $_POST['datatable'] . '&e=download';
            $pieces = explode(",", $_POST['gd']);
            $onlytitle = explode(".", $pieces[1]);
            $title = $onlytitle[0];
            $type = $pieces[2];
            $filesize = $pieces[3];
            $fileext = $pieces[4];
            $fileId = $pieces[5];
        }
        $fullPath = $upload_path . '/' . $title . '.' . $fileext;
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Cache-Control: public");
        header("Content-Description: File Transfer");
        header("Content-type: " . $type . "");
        header("Content-Disposition: attachment; filename=\"" . $title . '.' . $fileext . "\"");
        header("Content-Transfer-Encoding: binary");
        header("Content-Length: " . $filesize);
        // folder to save downloaded files to. must end with slash
        $destination_folder = $upload_path . '/';
        $newfname = $destination_folder . basename($title . '.' . $fileext);
        $file = fopen($url, "rb");
        if ($file) {
            $newf = fopen($newfname, "wb");
            if ($newf)
                while (!feof($file)) {
                    fwrite($newf, fread($file, 1024 * 8), 1024 * 8);
                }
        }
        if ($file) {
            fclose($file);
        }
        if ($newf) {
            fclose($newf);
        }
        ob_end_flush();

введите здесь описание изображения


person user3653474    schedule 11.09.2015    source источник
comment
Сталкиваетесь ли вы с какими-либо ошибками? Проверьте настройки общего доступа к файлу или папке, чтобы убедиться, что файл доступен.   -  person Twisty    schedule 11.09.2015
comment
Нет, я не получаю никаких ошибок. Есть ли ошибка в пути к папке для сохранения файла....   -  person user3653474    schedule 11.09.2015
comment
Когда происходит POST, что ваш браузер показывает в своей консоли для сообщения? Я не вижу, где определяется exportFormat, когда вы отправляете данные в PHP. Так что по умолчанию будет datatable, и я не понимаю, как это сериализуется. Я думаю, что это проблема.   -  person Twisty    schedule 11.09.2015
comment
Можете ли вы дать любую ссылку из вышеперечисленного ..   -  person user3653474    schedule 11.09.2015
comment
так как я новичок в гугл диске помогите решить мою проблему.   -  person user3653474    schedule 11.09.2015
comment
См. здесь: stackoverflow .com/questions/14873443/, а затем рассмотрите var datatable = { "url":url, "title":title, "type":type, "filesize":filesize, "fileext":fileext, "id":id };   -  person Twisty    schedule 11.09.2015
comment
Спасибо Twisty за ваше предложение, я попробовал, но оно не работает. Можете ли вы отредактировать мой код, чтобы он работал правильно. Из приведенного выше кода я получаю HTML-документ ASCII каждый раз, когда я загружаю изображение после выбора из средства выбора диска Google, я добавил это изображение.   -  person user3653474    schedule 13.09.2015
comment
Я не могу просто написать код для вас. У меня также нет возможности проверить код.   -  person Twisty    schedule 14.09.2015