我已经上传文件到谷歌驱动器与curl API。但我想上传文件到特定的文件夹。我还尝试过在API url中使用文件夹id,比如:https://www.googleapis.com/upload/drive/v3/files/folder_id?uploadtype=media
add_action('wpcf7_before_send_mail', 'save_application_form');
function save_application_form($WPCF7_ContactForm) {
$wpcf7 = WPCF7_ContactForm :: get_current();
$submission = WPCF7_Submission :: get_instance();
if ($WPCF7_ContactForm->id == 8578) {
if ($submission) {
$submited = array();
//$submited['title'] = $wpcf7->title();
$submited['posted_data'] = $submission->get_posted_data();
$uploaded_files = $submission->uploaded_files();
$name = $submited['posted_data']["Name"];
$position_test = $submited['posted_data']["Position"];
$email = $submited['posted_data']["Email"];
$phone = $submited['posted_data']["phone"];
$message = $submited['posted_data']["Message"];
$position = $submited['posted_data']["AttachYourCV"];
// $test2 = $_FILES['AttachYourCV']['name'];
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$cf7_file_field_name = 'AttachYourCV';
$image_location = $uploaded_files[$cf7_file_field_name];
$mime_type = finfo_file($finfo, $image_location);
$token = GetRefreshedAccessToken('client_id', 'refresh_token', 'client_secret');
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => 'https://www.googleapis.com/upload/drive/v3/files?uploadType=media',
CURLOPT_HTTPHEADER => array(
'Content-Type:' . $mime_type, // todo: runtime detection?
'Authorization: Bearer ' . $token
),
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => file_get_contents($image_location),
CURLOPT_RETURNTRANSFER => 1
));
$response = curl_exec($ch);
$id = json_decode($response, TRUE);
$get_id = $id['id'];
curl_close($ch);
if (isset($id['id'])) {
$get_id = $id['id'];
$post_fields = array();
$folder_id = '1-9r8oVsAfV_iJmYh1cZYPMvE9Qhv8RLA';
// remove extension
$this_file_name = explode('.', $position);
// submit name field
$post_fields['name'] .= $this_file_name[0];
$post_fields['parents'] = $folder_id[1];
$ch2 = curl_init();
curl_setopt_array($ch2, array(
CURLOPT_URL => 'https://www.googleapis.com/drive/v3/files/' . $get_id,
CURLOPT_HTTPHEADER => array(
'Content-Type:application/json', // todo: runtime detection?
'Authorization: Bearer ' . $token
),
CURLOPT_POST => 1,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_POSTFIELDS => json_encode($post_fields),
CURLOPT_RETURNTRANSFER => 1
));
$response = curl_exec($ch2);
if ($response === false) {
$output = 'ERROR: ' . curl_error($ch2);
} else {
$output = $response;
}
// close second request handler
curl_close($ch2);
}
}
我添加了另一个curl调用,但仍然没有得到文件夹中的文件。我的文件没有标题的问题用这种方式解决了。
https://www.googleapis.com/upload/drive/v3/files?uploadType=media&addParents=1bpHmln41UI-CRe5idKvxrkIpGKh57T32
$data = array("name" => "test.jpg", "parents" => array("123456"));
$data_string = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
这是我收到的错误
谢了!
我是否需要登录到google cloud来访问身份验证令牌或凭据的API
我见过这个问题被问过几次,但没有一个答案是有用的。除非是用户权限问题,否则我不知道如何处理。 上下文 创建了一个新文件(来自Lua应用,所以使用REST) 用过吗?uploadType=可恢复 从返回结果中,捕获了响应头['X-GUploader-UploadID']和响应['id'],两者的结果相同 然后,尝试更新,我发现404找不到。以下是Lua代码: 代码 [userStateID有上面捕获
我正在使用google drive api来管理多个用户的一些文件。现在我想知道如何将一些文件的所有权转移给另一个用户。