小编mit*_*rbe的帖子

如何恢复崩溃的上传?

注意:这个问题被标记为 13413036 的可能重复。事实并非如此,在那个问题中,他们询问如何使用可恢复上传来上传文件。这段代码正是这样做的,而且它有效。唯一的问题是库在长时间后崩溃。

我正在尝试将 40GB 的文件从 Cloud Compute 实例上传到 Drive。

我有一个在命令行上运行的 PHP 脚本,它在大约一个小时后崩溃。

PHP Fatal error:  Uncaught exception 'Google_Service_Exception' with message 'Error calling PUT https://www.goog
leapis.com/upload/drive/v2/files?uploadType=resumable&upload_id=AEnB2UrkY_dh7-GmPp33joiPzhBT3DHY6fg4bgN_PNWVgEYg
IBZmFf0UceJbLS1XeyaJ0bFxdMTNWtPVEAQKIf8uE7HBExuG6g: (503) Service Unavailable' in /var/www/backend/phpsdk/exampl
es/apiClient/src/Google/Http/REST.php:110
Stack trace:
#0 /var/www/backend/phpsdk/examples/apiClient/src/Google/Http/MediaFileUpload.php(183): Google_Http_REST::decode
HttpResponse(Object(Google_Http_Request), Object(Google_Client))
#1 /var/www/backend/phpsdk/examples/drive.php(95): Google_Http_MediaFileUpload->nextChunk('\xBA\x9AX\xBA\xAB\x9C
C\x91\x9E1\xDB|\xD0\xD5\xFB...')
#2 {main}
  thrown in /var/www/backend/phpsdk/examples/apiClient/src/Google/Http/REST.php on line 110
Run Code Online (Sandbox Code Playgroud)

如果我再次执行该脚本,则会在 Drive 中创建一个新文件。

崩溃后如何恢复初始上传?我可以在初始化 Google_Http_MediaFileUpload 后设置 resumeUri 吗?如何让 PHP 跳过读取文件到特定点?

代码是从示例中复制/粘贴的:

  // Create a media file upload to represent our upload process.
  $media = new Google_Http_MediaFileUpload(
      $client,
      $request, …
Run Code Online (Sandbox Code Playgroud)

php file-upload google-api-php-client

5
推荐指数
1
解决办法
696
查看次数

从Google Mail API解码PHP中的邮件附件

我正在使用适用于PHP的Google API客户端库与Gmail API一起下载和处理一些电子邮件.

我收到消息没有任何问题:

$optParamsGet = [];
$optParamsGet['format'] = 'full'; // Display message in payload
$message = $service->users_messages->get('me',$id,$optParamsGet);
$messagePayload = $message->getPayload();
Run Code Online (Sandbox Code Playgroud)

然后我处理getParts()数组并转到第一个附件,这是一个没有名称的.eml文件

    [modelData:protected] => Array
        (
            [headers] => Array
                (
                    [0] => Array
                        (
                            [name] => Content-Type
                            [value] => message/rfc822
                        )
                    [1] => Array
                        (
                            [name] => Content-Disposition
                            [value] => attachment; creation-date="Fri, 24 Jul 2015 00:20:48 GMT"; modification-date="Fri, 24 Jul 2015 00:20:48 GMT"
                        )
                )
            [body] => Array
                (
                    [attachmentId] => ANGjdJ_TfJlMTssCNackUcQfT...mpppKiT8sSg
                    [size] => 37099
                )
        )
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何解码"attachmentId"字符串?我认为这是一个base64编码,但命令

echo base64_decode($parts[1]->body->attachmentId); …
Run Code Online (Sandbox Code Playgroud)

php google-api-php-client gmail-api

2
推荐指数
1
解决办法
1448
查看次数