javascript - 如何使用 php 将文件从谷歌驱动器复制到另一台服务器

标签 javascript php google-drive-api google-picker

我想使用 php 将文件从 google 驱动器复制到另一台服务器。

我使用过谷歌驱动器选择器,当用户单击我用来获取下载网址的任何文件时,我认为可以通过复制功能来完成,但它不起作用。

请提供任何解决方案。

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'); 

最佳答案

在从 PHP 获取数据时,您需要授权并验证您的请求

你的JsFile

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"));
    }
}

关于javascript - 如何使用 php 将文件从谷歌驱动器复制到另一台服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32524935/

相关文章:

javascript - 为什么 React 状态是 init 状态而不是我刚刚设置的状态?

javascript - 在 javascript 或服务器端处理 session 超时

PHP:每当调用子类中的函数时调用函数

ios - iOS 中的 Google 云端硬盘 SDK

google-api - Google Drive API 分段上传导致文件损坏

javascript - 使用 TypeScript 简化 JavaScript 代码

javascript - lodash:根据日期聚合和减少对象数组

javascript - 如何在 CQ 组件中将一个 ecma 包含到另一个 ecma 中?

php - 如何使用复选框使用 HTML、CSS 正确处理 PHP 表单(URL)?

javascript - 如何使用JS和Golang将视频上传到Google云端硬盘?