尝试从Google Drive API获取图片网址而不是文件内容。 在新版本中,这个好东西已被弃用。
我搜索了很多,在Google开发人员课上有一个方法,但它在新版本中也没有。
问题是我将从云端硬盘中获取大量图片,但不想放弃谷歌尝试通过我的应用程序所有图像的速度。这也是愚蠢的。
有没有办法以某种方式获得这些链接?
这是我用来获取文件内容的代码:
$this->client = new \Google_Client();
$this->client->setAuthConfigFile('config.json');
$this->client->setScopes('https://www.googleapis.com/auth/drive');
if (isset($_GET['code'])) $code = $_GET['code'];
if(!isset($_SESSION['access_token'])){
if (!isset( $code )){
$auth_url = $this->client->createAuthUrl();
$filtered_url = filter_var($auth_url, FILTER_SANITIZE_URL);
return redirect($filtered_url);
}else{
$this->client->authenticate($_GET['code']);
$_SESSION['access_token'] = $this->client->getAccessToken();
// return redirect('/');
}
}
$this->service = new \Google_Service_Drive($this->client);
$file_id = '0B3vR4cBcxn4oNm9TSlBzcngyMzQ';
$results = $this->service->files->get($file_id, array('alt' => 'media'));
$imaga = $results->getBody()->getContents();
$imageData = base64_encode($imaga);
$contentType = $results->getHeader("content-type");
$src = 'data: '.$contentType[0].';base64,'.$imageData;
答案 0 :(得分:0)
截至目前,我认为有两种方法可以通过API访问您的云端硬盘图片。如果要下载文件,则使用webContentLink
;如果要显示文件,则使用webViewLink
。这些是您可以使用的可用驱动器metadata。
答案 1 :(得分:0)
我使用 node.js 和npm package googleapis(来自Google的官方软件包)遇到了同样的问题。
以下解决方案不在PHP中,但概念应保持不变。
虽然我迟到但可能会帮助其他人寻找类似的问题。
<强> Node.js的强>
var google = require('googleapis');
var OAuth2 = google.auth.OAuth2;
//setup your oauth credentials and tokens
oauth2Client.setCredentials(tokens);
var drive = google.drive({
version: 'v2',
auth: oauth2Client
});
drive.files.get({
fileId: fileId, //id of the file you are looking for
alt: 'media'
}, {
responseType: 'arraybuffer',
encoding: null
}, function(err, response) {
if (err) {
console.log(err);
//handle the error
} else {
var imageType = response.headers['content-type'];
var base64 = new Buffer(response.data, 'utf8').toString('base64');
var dataURI = 'data:' + imageType + ';base64,' + base64;
res.send(dataURI);
}
});
<强> HTML 强>
<img src="dataURI_received_from_above_HTTP_request"></img>