Google drive api 试图将从google drive接收到的原始数据保存到服务器

Google drive api 试图将从google drive接收到的原始数据保存到服务器,google-drive-api,Google Drive Api,我正在制作这项服务,它允许从用户的谷歌硬盘中提取一些pdf文件,然后脚本将文件转换为jpg。我一直在从谷歌硬盘加载文件 我得到的文件数据如下: function step3process() { $("#content").empty(); var pdf = checkedPdf[downloadedCnt]; var i = downloadedCnt; gapi.client.request({ 'path':

我正在制作这项服务,它允许从用户的谷歌硬盘中提取一些pdf文件,然后脚本将文件转换为jpg。我一直在从谷歌硬盘加载文件

我得到的文件数据如下:

function step3process()
{
    $("#content").empty();
    var pdf = checkedPdf[downloadedCnt];
    var i = downloadedCnt;
            gapi.client.request({
                'path': '/drive/v2/files/'+pdf,
                'method': 'GET',
                callback: function ( theResponseJS, theResponseTXT ) {
                    var myToken = gapi.auth.getToken();
                    var myXHR   = new XMLHttpRequest();
                    myXHR.open('GET', theResponseJS.downloadUrl, true );
                    myXHR.setRequestHeader('Authorization', 'Bearer ' + myToken.access_token );
                    myXHR.onreadystatechange = function( theProgressEvent ) {
                        if (myXHR.readyState == 4) {

                            if ( myXHR.status == 200 ) {


                                var rawcont = utf8_to_b64(myXHR.response);

                                $.ajax({
                                        type: "POST",
                                        beforeSend: function(req) {
                                            req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
                                        },
                                        url: './savepdf.php',
                                        data: rawcont,
                                        dataType: "json"
                                    }

                                ).done(
                                    function (msg) {
                                        downloadedCnt++;
                                        console.log("Скачан файл " + msg.name + " Всего скачано " + downloadedCnt + " из " + checkedPdf.length);
                                        if (downloadedCnt < checkedPdf.length) step3process();
                                    }
                                );
                            }
                        }
                    };
                    myXHR.send();


                }
            });


}
毕竟,我得到的是这样的空pdf:

我还注意到,原始pdf文件和下载的pdf文件存在一些差异,以下是示例:


我的解决方案将是,如果我可以得到pdf文件的内容。Tnx。最后,我向php提供了令牌:

                    $.ajax({
                        type: "POST",
                        url: './downloadpdf.php',
                        data: "url="+ encodeURIComponent(downUrl) + "&name="+ encodeURIComponent(pdfNames[pdf]) +"&token=" + myToken.access_token,
                        dataType: "json"
                    }).done();
并使用php轻松下载文件:

$url = urldecode($_POST['url']);
$name = urldecode($_POST['name']);
$token = $_POST['token'];


$ch = curl_init();

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer '.$token
));

$filepath = "./pdf/{$name}";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL
$pdf = curl_exec($ch);
curl_close($ch);

file_put_contents($filepath,$pdf);
仍然不知道,为什么不能保存原始数据。希望这能有所帮助

$url = urldecode($_POST['url']);
$name = urldecode($_POST['name']);
$token = $_POST['token'];


$ch = curl_init();

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer '.$token
));

$filepath = "./pdf/{$name}";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL
$pdf = curl_exec($ch);
curl_close($ch);

file_put_contents($filepath,$pdf);