javascript — Как скопировать файл с Google Drive на другой сервер, используя переполнение стека

Я хочу скопировать файл с Google Drive на другой сервер с помощью php.

Я использовал Google Drive Picker и когда пользователь нажимал на любой файл, который я использовал, чтобы получить URL-адрес загрузки, я думал, что это можно сделать с помощью функции копирования, но это не сработало.

Любое решение, пожалуйста.

function getDownloadurl(fileId) {
var request =  gapi.client.request({
'path': '/drive/v2/files/' + fileId,
'params': { 'maxResults': '1000' },
callback: function (responsejs, responsetxt) {
var fileDownloadUrl = responsejs.downloadUrl;
$.ajax({
type: "POST",
url: "ajax-files/copy_drive_file.php",
data: { gd_url:fileDownloadUrl },
async:false,
success: function(data)
{

}
});

copy_drive_file.php

$sourcePath=$_POST['gd_url'];
copy($sourcePath, 'sss/file.jpg');

0

Решение

Вам нужно авторизовать и аутентифицировать ваши запросы при получении из PHP

YourJsFile

function getDownloadurl(fileId) {
var accessToken =  gapi.auth.getToken().access_token;
var request = gapi.client.request({
'path': '/drive/v2/files/' + fileId,
'params': {
'maxResults': '1000'
},
callback: function(responsejs, responsetxt) {
var fileDownloadUrl = responsejs.downloadUrl;
$.ajax({
type: "POST",
url: "ajax-files/copy_drive_file.php",
data: {
gd_url: fileDownloadUrl,
accessToken: accessToken
},
async: false,
success: function(data) {
console.log(data);
}
});
}
});
}

copy_drive_file.php

if ( isset($_POST['gd_url']) && isset($_POST['accessToken'])) {
$url = $_POST['gd_url'];
$accessToken = $_POST['accessToken'];
$opts = array(
'http'=>array(
'method'=>"GET",
'header' => "Authorization: Bearer " . $accessToken
)
);
$context = stream_context_create($opts);
$content = file_get_contents($url, false, $context);
if (!empty($content)){
file_put_contents("path/filename.file_extension",$content);
echo json_encode(array('file_name' => "filename.file_extension"));
}
}
2

Другие решения

Может это поможет?

function copyFile($service, $originFileId, $copyTitle) {
$copiedFile = new Google_Service_Drive_DriveFile();
$copiedFile->setTitle($copyTitle);
try {
return $service->files->copy($originFileId, $copiedFile);
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
return NULL;
}
0

По вопросам рекламы [email protected]