繁体   English   中英

如何使用PHP下载Google驱动器文件内容并保存为相应的文件格式

[英]How to download the google drive file content and save into corresponding file format using PHP

我正在使用Google Drive应用程序,需要使用PHP API下载内容并将内容写入相应的格式(例如word,Excel或ppt)。 请注意,文件不是本机格式,因此不会有下载网址。我正在使用导出链接下载内容。 我正在创建Google驱动器文档,表格和幻灯片格式的文件。

下面是我的代码

$file = $service->files->get($fileId);            
$downloadUrl = $file['exportLinks']['application/vnd.openxmlformats-officedocument.wordprocessingml.document'];
if ($downloadUrl) {
  $request = new Google_HttpRequest($downloadUrl, 'GET', null, null);
  $httpRequest = Google_Client::$io->authenticatedRequest($request);              
  if ($httpRequest->getResponseHttpCode() == 200) {   
      $response = $httpRequest->getResponseBody();
  } else {
    // An error occurred.
    return null;
  }
} else {
  return null;
}

一切正常,我也收到如下响应。

Google_HttpRequest Object
(
    [batchHeaders:Google_HttpRequest:private] => Array
        (
            [Content-Type] => application/http
            [Content-Transfer-Encoding] => binary
            [MIME-Version] => 1.0
            [Content-Length] => 
        )

    [url:protected] => https://docs.google.com/feeds/download/documents/export/Export?id=1aKI7o3g-eLNuLV7dAc-gS5oakhkwl3dLfVPaBBJX0Y4&exportFormat=docx
    [requestMethod:protected] => GET
    [requestHeaders:protected] => Array
        (
            [authorization] => Bearer ya29.IAHncRF0XeCjbX967QqIOb3IDVfowGgmmSC6SDssBW1yFXdfX4MlxbcqOB21CRW1HmVtyqMfC1QzgQ
        )

    [postBody:protected] => 
    [userAgent:protected] => google-api-php-client/0.6.5
    [responseHttpCode:protected] => 200
    [responseHeaders:protected] => Array
        (
            [content-type] => application/vnd.openxmlformats-officedocument.wordprocessingml.document; charset=utf-8
            [x-robots-tag] => noarchive
            [content-disposition] => attachment;filename="asd.docx"
            [set-cookie] => NID=67=W-YZgqChz2SoodlmbjJDk9WpVdCFMg9Z-mX2KgBxZrYyUUix0aXfKtVMnwZm6XQ4UOZG7NpHEC6XRwbMgTft4nAMQFQHUV4Z-9L1dEWkSlmKIoJLJhyyGhVQeh0r20Vz;Domain=.google.com;Path=/;Expires=Sat, 22-Aug-2015 07:36:01 GMT;HttpOnly
            [p3p] => CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
            [date] => Fri, 20 Feb 2015 07:36:01 GMT
            [expires] => Fri, 20 Feb 2015 07:36:01 GMT
            [cache-control] => private, max-age=0
            [x-content-type-options] => nosniff
            [x-frame-options] => SAMEORIGIN
            [x-xss-protection] => 1; mode=block
            [server] => GSE
            [transfer-encoding] => chunked
            [alternate-protocol] => 443:quic,p=0.08
        )

    [responseBody:protected] => PK€¼SFdocProps/app.xmlÁ
Â0D¿À¹kªI[Ñ«õ’m
´»!»Šþ½A={Þð˜±í}Ô
2GÂZÏg•V€žBľ֧ãnºÒŠÅap!Ôú¬Ûfb™d‰Àªk}IkcØ_`t<+é(NJ̽¡®‹¶ä¯# ˜EU-
Ü0@˜¦P¿ë›ü+
ä_ûø||¤âkì&¥!z'åd³'êP¥ÃÖük¾§š'PKoð„¬PK€¼SFdocProps/core.xmlmÏJÄ@‡ŸÀw(soÓ® RÚîÍ“‚
^‡LìÛùÃ$ÚîÛ;[´
î1ù}ùHÒí7Ÿ”Øß«¦ªUAƒ±~ìÕëËCy¯
íž‚§^‰Õ~¸é0¶=¥)‰%.²Ès‹±WG‘Ø0Éi®2ásø’Ó’Ë4BÔxÒ#Á®®ïÀ‘h£EÃEXÆͨ¾•7eüHÓ*04‘#/MÕÀ/+”_X“?¤³rŽtý    7za»ó¯§–Ö_^…¤†Î`+V&4›Ê\:ØZüûÞðPK}Š·–â‰PK€¼SFword/numbering.xml¥’Anƒ0EOÐ; ïHU…B³hÔnºk{€‰1`ÅöXcÍíë„-•*JWÆÿýïáowZE 'Ñdl³NX$Ç\š2cïoO«{9&…Fdì$Û=ÜlÛÔÔú (œ‹Â¸TóŒUÞÛ4Ž¯„·F+LH|x¥2Ö@ÇÚ®8j^¤’þß&É»b0c5™ôŠXiÉ  þ,I±($×G¯ 9¾d¼ÖÂø‹cLB…h\%­ëiz)-«Òüv‰F«þ\kç¸åmسVQ‹”[B.œ_÷Ýp n’<#Åœß=û$¤0çvL@ƒ÷:x_—vAwáÔœ ÝèEèô3,ØçW½•³ZüRk ]m'µ/·RI¿ï“äuÌXM&í-9¡ÃÂ$)…ä¢ûô
ã{’¬×ZtŒI¨ÐWIëzš¾•ŠUi~;D£U¿¯µcÜr‚6Ü…V'£)·„\8VW§â@œ%#x@Š1-üôì;Ñ Í€9$ã4xOƒw7´#ê|ó,œÓÈ©ô&·´¿în˜çw½•£R|A*_ÓÈ[¼ò=@ÝBPÈw"ÓÀæ¼çR.¡$Ðçº?Ýì,¹ˆËº+δò´WÂÚ²E÷úDmj@‡èmHlëÀóÑûšÅWå'’ ëq÷j-¾PK-ldv÷PK€¼SFword/styles.xmlíWíNÛ0}‚½C”ÿ¦”lª(¨±MblÝ8ŽÓxulËvZº§ŸoLY“R4ÆÚ?é½ö=××çøÆ9»¸O‰³DBbF'®íÃöéí¿Êvbƒ>Äb_‚Xìôï×݉žaUÜÅ·±\L|ïû³ëÕHä…¾ÉGÏÿ&ZwY¨ºŠ°žû/éÐ\äÿ;%úÏUâ-Ø—«òü7PKå 7.bPK€¼SFword/document.xmlíXKnÛ0=Aï@pËv"0âdQ#Ý4…§“#‰
 );éÁz’R_§NR¸Ð6€´HçÍã›)èüò^I²Fç…Ñ3:)AÍ:›ÑÏ·W'g”øšƒ4gt‹ž^^¼9ßL¹a…BHDÐ~ªØŒæ!Øi’x–£?0u4¦Æ)±ë²D»+ì  3ÊB+!EØ&ãáðm`ÌŒNOˆ%˜3Þ¤¡t™š4›Gëá‰[»ÌÊUÄÄ¡ŒŒö¹°¾ESÇ¢EcÞ‚¬·ˆµ’í¼=$w°‰éP²´1Ž[gzGçµ±C
°„è<¡ðkÌ–‰¡;˜²8ö€ºØƒ»­‚Ú-d§…—‡©MÅÊÛ>fGèùÐߊƒªx!z…ÂuyËÁ…@ƒ 
»CþôºbæÙA弇ÄdÔ®Hýev4Ü+—ewhÙËÐ>8SXz7 °»,ö4'›)3ÒÄ઺hRÙ
ß–OÍqã‹6m†nî‰ÁÇCs”OÌ›c
…,U¸…+Þ‹tã\)4Þ2¾PSzC°\¶WSe§"ÍŒx
Ë`
²±'¼{Ñ
*„(Èý¥ÚÙ«uDzÖ¡G·Fzвwûñíû`0(}CðW(ÖJMú4÷öööö¾LÃg½+!‘ 9YmÉ2~úûœMÆcr:ÉâšôàëKx¯a¯áÿ á³çx/ž÷›ÌëKn¯á_:™ãyœ:ÁaK¾@<šßþÛ—Å#õ|›-¿F‡ÍŒŽÆãI…ŸÇöéÙ¤‘Ùf×P²“˜Æü&õ'²üA7»ë¬LF5ýãS¡n·£Õp¥gC®e’´¿E’ÝÜ‹ŸPKäöƒ¯PK€¼SFword/_rels/document.xml.rels­’ÍJ1€ŸÀwsw³mEDšíE
½Êúivö‡&“LÅ}{£`°à‚‡=†!ß÷1Ìþðá¬xǘ&O
6U
Éøn¢AÁ[{¼‘XS§­'T0c‚Cs·E«9ÿIã’ÈJ
Fæð,e2#:*ò¤÷ÑiÎÏ8È ÍE(·uý(ão47LÑê8 +è=q«Ï«ŒÑÎÿ#ò}?|ñæêøŸ,`§NAÇM6ÞkÈhc¨Åu5
‹Z¼ÍžË;Q ©`”‹j±“ñÕh¶M€‹ÖbI”î¥D½¯°Š    Wš˜½"þÌ™”~W7Ãá­Ô1*©õãÑ#4jå¨xÚðq’Á¡(ºÆ6«*%gµ"®Ëu0_RÊ}BÅÊ].mÂ7y4¡­|°×½òd²5PLU¦å¹K~Äl¤‰zåYY¶9›Æjèõ­[ÊQ"Ü»ª¯xeÃàÒÖ^ž¢ó=ßpäLÍ\ž ·>V~™U—‡è­OA°|šcBÉaF€vC
˜’9d²§o¡ÏÖ1ÿâ¦Uÿ0±[; â©üÇâír÷£PKȤ›£H¨PK€¼SFoð„¬docProps/app.xmlPK€¼SF}Š·–â‰êdocProps/core.xmlPK€¼SF'œ±ÝX»word/numbering.xmlPK€¼SFˆê¢H©ˆ£word/settings.xmlPK€¼SF-ldv÷‹word/fontTable.xmlPK€¼SFå 7.bAword/styles.xmlPK€¼SFäöƒ¯à
word/document.xmlPK€¼SFin’øߨÎ
word/_rels/document.xml.relsPK€¼SF/]ãM÷_rels/.relsPK€¼SFȤ›£H¨[Content_Types].xmlPK

|œ
    [accessKey] => 
)

如何将responseBody解码为原始格式并写入文件。 请提供一些示例代码。 我也需要对以下导出格式执行相同操作

  1. 应用/ vnd.openxmlformats-officedocument.presentationml.presentation
  2. 应用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet

谢谢

我知道迟到了,但这会帮助某人。 我花了一整天的时间来找出相同的问题。 发生的情况是浏览器无法翻译响应,因此您无法查看响应内容。 所有你要做的就是

file_put_contents('BULK/Sample_08_TemplateCloneRow.docx',$httpRequest->getResponseBody());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM