使用PHP在Google驱动器中恢复上传 [英] Resumable upload with Google drive with php

查看:82
本文介绍了使用PHP在Google驱动器中恢复上传的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用以下文档在Google云端硬盘中使用PHP恢复可恢复的上传: https://developers.google.com/drive/v3/web/manage-uploads#resumable

I'm trying to make a resumable upload in php with Google Drive, using this doc: https://developers.google.com/drive/v3/web/manage-uploads#resumable

我需要做

我已经管理了一个简单的上载,但是当我尝试启动可恢复的会话时,我的cURL不返回任何内容。

I already manage a simple upload but when I try to start a resumable session, my cURL don't return anything.

这是我的cURL的样子:

Here what my cURL looks like:

$curl_header = array(
    'Authorization: Bearer '.$this->_token,
    'X-Upload-Content-Length: '.$total_file_size,
    'X-Upload-Content-Type: '.$mime_type
);

$datas = array();

$url_upload = 'https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable';

$curl_default_options = array(
    // Default option (http://php.net/manual/fr/function.curl-setopt.php)
    CURLOPT_HTTPHEADER => $curl_header,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_CAINFO => $path_cert.'/googledrive/certificat.pem',
    CURLOPT_URL        => $url_upload,
    CURLOPT_POST       => true,
    CURLOPT_POSTFIELDS => $datas
);

$curl = curl_init();

curl_setopt_array($curl, $curl_default_options);

if (count($curl_more_options)) {
    curl_setopt_array($curl, $curl_more_options);
}

我做了一个 curl_getinfo($ curl)并得到了:

I did a "curl_getinfo($curl)" and got that:

Array ( 
    [url] => https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable 
    [content_type] => text/html; charset=UTF-8 
    [http_code] => 200 
    [header_size] => 699 
    [request_size] => 288 
    [filetime] => -1 
    [ssl_verify_result] => 0 
    [redirect_count] => 0 
    [total_time] => 0.203 
    [namelookup_time] => 0 
    [connect_time] => 0.016 
    [pretransfer_time] => 0.047 
    [size_upload] => 0 
    [size_download] => 0 
    [speed_download] => 0 
    [speed_upload] => 0 
    [download_content_length] => 0 
    [upload_content_length] => -1 
    [starttransfer_time] => 0.203 
    [redirect_time] => 0 
    [redirect_url] => 
    [primary_ip] => 216.58.208.202 
    [certinfo] => Array ( ) 
    [primary_port] => 443 
    [local_ip] => 192.168.0.44 
    [local_port] => 56440 
)


推荐答案

已经很长时间了,但一定是这样的:

It's been a long time, but it must be something like that:


  • 第一部分上传:

  • First part upload:

$curl_headers = array(
    'Content-Type: application/json',
    'X-Upload-Content-Length: '.$total_file_size,
    'X-Upload-Content-Type: '.$mime_type
);

$datas = '{
    "name": "'.$name.'",
    "parents": ["'.$id_file_destination.'"]
 }';

$url = 'https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable';

$curl_default_options = array(
    CURLOPT_HTTPHEADER     => $curl_headers,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_CAINFO         => $path_cert.'/certificat.pem',
    CURLOPT_URL            => $url,
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $datas,
    CURLOPT_HEADER         => true
);


您将收到可以使用的会话恢复上传:

You will receive a session that can be used to resume the upload:


  • 可恢复上传:

  • Resumable upload:

$header = array(
    'Content-Length: '.$content_length,
    'Content-Type: '.$mime_type,
    'Content-Range: bytes '.$byte_start.'-'.$byte_end.'/'.$total_file_size,
);

$datas = fread($file, $content_length);

$url = $session;

$curl_default_options = array(
    CURLOPT_HTTPHEADER     => $header,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_CAINFO         => $path_cert.'/certificat.pem',
    CURLOPT_URL            => $url,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_INFILE         => $file,
    CURLOPT_INFILESIZE     => $total_file_size,
    CURLOPT_POSTFIELDS     => $datas,
    CURLOPT_HEADER         => true,
);


这篇关于使用PHP在Google驱动器中恢复上传的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆