似乎没有示例应用程序或演示使用PHP将文件从例如Compute Engine上托管的PHP应用程序上传到Google云端存储。
我正在努力对google-api-php-client库进行逆向工程,以弄清楚它应该如何工作。
我已经在github上查看了storage-getting-started-php,但是在脚本中似乎没有任何上传内容。
我可以使用JSON库并编写我自己的php文件处理库,但如果代码已经在php客户端库中编写,这似乎是不必要的。
对此问题的任何帮助将不胜感激。我正在迁移一个真正高流量的站点来计算引擎。
答案 0 :(得分:1)
从github查看此链接。 https://github.com/google/google-api-php-client/tree/master/examples。我的理解是你需要获得一个授权令牌才能使用PHP上传文件。
答案 1 :(得分:0)
我一直与谷歌支持联系。他们给了我这个代码。虽然我还没有机会测试它。
<?php
include 'lib/cms.php';
require_once('config.php');
require_once(MVC_ROOT . 'models/App.php');
ini_set("memory_limit", "-1M");
ini_set("max_input_time", "-1");
ini_set("max_execution_time", "-1");
set_time_limit(0);
ignore_user_abort();
$copyOrMove = (SYSTEM_PLATFORM == 'gogrid') ? 'cp' : 'mv';
$cms = new CMS();
$dbh = $cms->dbh;
$data = $_POST['data'];
//$appcode = $cms->safeInput($_REQUEST['app']);
$appcode = $cms->getAppcode();
$type = $_REQUEST['type'];
$appdir = '../apps/' . $appcode;
if (!file_exists($appdir)) mkdir($appdir);
if (!file_exists($appdir . '/images')) mkdir($appdir . '/images');
if (!file_exists($appdir . '/images/org')) mkdir($appdir . '/images/org');
if (!file_exists($appdir . '/images/gallery')) mkdir($appdir . '/images/gallery');
if (!file_exists($appdir . '/images/30')) mkdir($appdir . '/images/30');
if (!file_exists($appdir . '/images/75')) mkdir($appdir . '/images/75');
if (!file_exists($appdir . '/images/200')) mkdir($appdir . '/images/200');
if (!file_exists($appdir . '/images/resources')) mkdir($appdir . '/images/resources');
if (!file_exists($appdir . '/attachments')) mkdir($appdir . '/attachments');
if ($type == "image") {
$filename = 'homepage-' . date("Ymd-His") . '.png';
$dir = "../apps/" . $appCode . "/images";
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
//first lets delete the old ones...
foreach (glob("../apps/" . $appcode . "/images/homepage*.png") as $killfilename) {
echo "$killfilename size " . filesize($killfilename) . "\n";
unlink($killfilename);
exec("gsutil -m rm gs://gs.appbuild.io/apps/$appcode/images/homepage*.png");
}
//$filename='homepage.png';
$file = "../apps/$appcode/images/" . $filename;
$uri = substr($data, strpos($data, ",") + 1);
file_put_contents($file, base64_decode($uri));
$dir = "../apps/" . $appcode . "/images/resources";
resizeImage($file, 640, 960, $dir . "/Default@2x.png");
resizeImage($file, 640, 1136, $dir . "/Default-568h@2x.png");
resizeImage($file, 320, 480, $dir . "/Default.png");
$pathArray = array("../apps/$appcode/images/resources/Default@2x.png","../apps/$appcode/images/resources/Default-568h@2x.png","../apps/$appcode/images/resources/Default.png");
exec("gsutil $copyOrMove ../apps/$appcode/images/$filename gs://gs.appbuild.io/apps/$appcode/images/");
exec("gsutil -m $copyOrMove ". implode(' ',$pathArray) ." gs://gs.appbuild.io/apps/$appcode/images/resources/");
$sql = "INSERT INTO appearance SET appearance_background_image='$filename', app_code='$appcode' ON DUPLICATE KEY UPDATE appearance_background_image='$filename'";
$stmt = $dbh->query($sql);
$dbh = null;
// return the filename
echo URL_CDN_ROOT . "apps/$appcode/images/" . $filename;
} else if ($type == "icon") {
$size = $_REQUEST['size'];
$filename = 'icon_' . $size . '.png';
$dir = "../apps/" . $appcode . "/images/resources";
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
$file = $dir . "/$filename";
$uri = substr($data, strpos($data, ",") + 1);
file_put_contents($file, base64_decode($uri));
resizeImage($file, 57, 57, $dir . "/icon_57.png");
resizeImage($file, 57, 57, $dir . "/icon.png");
resizeImage($file, 72, 72, $dir . "/icon_72.png");
resizeImage($file, 114, 114, $dir . "/icon_114.png");
resizeImage($file, 114, 114, $dir . "/icon@2x.png");
resizeImage($file, 120, 120, $dir . "/icon_120.png");
resizeImage($file, 175, 175, $dir . "/icon_175.png");
resizeImage($file, 1024, 1024, $dir . "/icon_1024.png");
$filepaths = array($filename, "icon_57.png", "icon.png", "icon_72.png", "icon_114.png", "icon@2x.png", "icon_120.png", "icon_175.png", "icon_1024.png");
$fromArray = array();
foreach ($filepaths as $filenm){
$fromArray[] = "../apps/$appcode/images/resources/$filenm";
}
exec("gsutil -m $copyOrMove ". implode(' ', $fromArray) ." gs://gs.appbuild.io/apps/$appcode/images/resources/");
$app = new App($appcode);
$app->setAppIcon(implode(',', $filepaths));
echo URL_CDN_ROOT . "apps/$appcode/images/resources/$filename";
}
if (SYSTEM_PLATFORM == 'computeengine' && $appcode != '') delTree("../apps/$appcode");
function resizeImage($filename, $new_width, $new_height, $dirname)
{
list($width, $height) = getimagesize($filename);
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefrompng($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
//$newfilename = $dir . "/icon_" . $new_width . ".png";
imagepng($image_p, $dirname);
}
function delTree($dir) {
$files = array_diff(scandir($dir), array('.','..'));
foreach ($files as $file) {
(is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file");
}
return rmdir($dir);
}
?>