Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 卷曲上传到谷歌硬盘_Php_Curl_Upload_Google Drive Api - Fatal编程技术网

Php 卷曲上传到谷歌硬盘

Php 卷曲上传到谷歌硬盘,php,curl,upload,google-drive-api,Php,Curl,Upload,Google Drive Api,我可以通过json在Google Drive中创建一个文件到驱动器文件夹中: $data = array( "title" => $_FILES['file']['name'], "parents" => array(array( "kind" => "drive#parentReference", "id" => $parent_id )), "mimeType" => "application/pd

我可以通过json在Google Drive中创建一个文件到驱动器文件夹中:

$data = array(
    "title" => $_FILES['file']['name'],
    "parents" => array(array(
        "kind" => "drive#parentReference",
        "id" => $parent_id
    )),
    "mimeType" => "application/pdf"
);
$data = json_encode($data);

$url = "https://www.googleapis.com/drive/v2/files?oauth_token=".$accessToken;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
但是我找不到在上面添加PDF文件的方法,因为GoogleDrive文档中没有指定json属性

我必须在哪里添加文件内容? 这可能吗


我是否必须先将文件上载到upload/drive,然后再上载带有文件夹id的元数据?我觉得没有什么意义。

您想将文件放在正文中(即,在CURLOPT_post字段中)。您还需要指定与文件类型和内容长度匹配的内容类型

这是

文件元数据应该指向/drive/v2/files,而不是/upload/drive/v2/files

这样,您必须提出两个请求

如果要同时执行文件和元,可以使用API和文件插入:


请注意,有一种方法可以简化此操作。

是的,编辑了路径。问题是,如果我发送文件内容,我找不到发送父文件夹id或文件上任何其他信息的方法。是获取文件路径的Title属性吗?我已尝试使用该库,但由于某些原因无法使其工作。这个项目从一开始就是在curl上进行的,所以我不知道这是否与现在不在库上工作有关。它只是在我在客户端设置访问令牌时,在我的控制台上显示内部服务器错误。您知道如何以curl方式添加文件吗?@mrq如上所述,如果您要直接使用API而不使用便利库,则需要执行两个事务,一个用于放置文件,另一个用于设置元。如果有机会,我会尝试更新更详细的答案。我尝试过使用double curl调用,但是如果我在postfields上获得文件,我无法发送文件id将其上载到。我以前从来没有这样做过,如果我看起来太无知,我很抱歉,但我在这方面。谢谢