我发现创建Picasa相册和上传图片的所有教程都使用了我尚未研究的Zend Framework.
我的图像存储在目录e:/ images中,图像信息存储在MysqL表中,如下所示:
SET sql_MODE="NO_AUTO_VALUE_ON_ZERO"; CREATE TABLE IF NOT EXISTS `picasaimage` ( `id` bigint(1) unsigned NOT NULL AUTO_INCREMENT,`title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,`content` varchar(255) COLLATE utf8_unicode_ci NOT NULL,`tags` varchar(255) COLLATE utf8_unicode_ci NOT NULL,`license` varchar(50) COLLATE utf8_unicode_ci NOT NULL,`image_path` varchar(150) COLLATE utf8_unicode_ci NOT NULL,`width` int(4) COLLATE utf8_unicode_ci NOT NULL,`height` int(4) COLLATE utf8_unicode_ci NOT NULL,PRIMARY KEY (`id`),) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0 ;
<?PHP $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,"https://www.google.com/accounts/ClientLogin"); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); $data = array('accountType' => 'GOOGLE','Email' => 'youremailaddress@gmail.com','Passwd' => 'yourpassword','source'=>'PHI-cUrl-Example','service'=>'lh2'); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_RETURNTRANSFER,CURLOPT_POSTFIELDS,$data); $hasil = curl_exec($ch); echo $hasil; //SID=DQA...oUE //LSID=DQA...bbo //Auth=DQA...Sxq ?>
任何人都可以为创建一个名为test并将图像上传的专辑提供一些指导?
EDIT1:
参考http://commons.wikimedia.org/wiki/Commons:Picasa_Web_Albums_files
Creative Commons Attribution 3.0 Unported (CC-BY) Creative Commons Attribution-Share Alike 3.0 Unported Unlicensed Creative Commons Attribution-Noncommercial 3.0 Unported Creative Commons Attribution-No Derivative Works 3.0 Unported Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported
检查从api获取相册照片的响应数据,应该有这样的东西:
"gphoto$license":{ "$t":"ATTRIBUTION_NON_COMMERCIAL_NO_DERIVATIVES","id":3,"name":"Attribution-Noncommercial-No Derivative","url":"http://creativecommons.org/licenses/by-nc-nd/3.0" },
以下是创建相册的一些代码.我们将接收cURL呼叫进行身份验证.
原文链接:https://www.f2er.com/php/132257.html//This is the cURL call to authenticate. We'll splitting out the return values //to more easily get the auth code. $ret = explode("\n",curl_exec($ch)); //Save all of the return values to an array so we can get them more easily later $gvals = array(); foreach($ret as $item) { $flds = explode("=",$item); if(count($flds) > 1) { $gvals[$flds[0]] = $flds[1]; } } //This is the authentication header we'll need to pass with each successive call $authHeader = 'Authorization: GoogleLogin auth="' . $gvals['Auth'] . '"'; $userId = "THE PICASA USER ID GOES HERE"; $FeedUrl = "https://picasaweb.google.com/data/Feed/api/user/$userId"; //This is the XML for creating a new album. $rawXml = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mRSS/' xmlns:gphoto='http://schemas.google.com/photos/2007'> <title type='text'>Test album from PHP</title> <summary type='text'>This is a test album</summary> <gphoto:location>Louisville</gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:timestamp>1152255600000</gphoto:timestamp> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album'></category> </entry>"; //Setup our cURL options //Notice the last one where we pass in the authentication header $options = array( CURLOPT_URL=> $FeedUrl,CURLOPT_SSL_VERIFYPEER=> false,CURLOPT_POST=> true,CURLOPT_RETURNTRANSFER=> true,CURLOPT_HEADER=> true,CURLOPT_FOLLOWLOCATION=> true,CURLOPT_POSTFIELDS=> $rawXml,CURLOPT_HTTPHEADER=> array('GData-Version: 2',$authHeader,'Content-Type: application/atom+xml') ); curl_setopt_array($ch,$options); //This call will create the Picasa album. //The return value is XML with a bunch of information about the newly created album. $ret = curl_exec($ch);
上传照片的工作方式类似:
http://code.google.com/apis/picasaweb/docs/2.0/developers_guide_protocol.html#PostPhotos
$userId = "USER ID GOES HERE"; $albumId = "ALBUM ID GOES HERE"; $albumUrl = "https://picasaweb.google.com/data/Feed/api/user/$userId/albumid/$albumId"; $imgName = $_SERVER['DOCUMENT_ROOT'] . '/picasa/cute_baby_kitten.jpg'; //Get the binary image data $fileSize = filesize($imgName); $fh = fopen($imgName,'rb'); $imgData = fread($fh,$fileSize); fclose($fh); $header = array('GData-Version: 2','Content-Type: image/jpeg','Content-Length: ' . $fileSize,'Slug: cute_baby_kitten.jpg'); $data = $imgData; //Make sure the image data is NOT Base64 encoded otherwise the upload will fail with a "Not an image" error $ret = ""; $ch = curl_init($albumUrl); $options = array( CURLOPT_SSL_VERIFYPEER=> false,CURLOPT_POSTFIELDS=> $data,CURLOPT_HTTPHEADER=> $header ); curl_setopt_array($ch,$options); $ret = curl_exec($ch); curl_close($ch);
以下是使用元数据上传照片的一个例子(最后!):
$albumUrl = "https://picasaweb.google.com/data/Feed/api/user/$userId/albumid/$albumId"; $imgName = $_SERVER['DOCUMENT_ROOT'] . '/picasa/cute_baby_kitten.jpg'; $rawImgXml = '<entry xmlns="http://www.w3.org/2005/Atom"> <title>plz-to-love-realcat.jpg</title> <summary>Real cat wants attention too.</summary> <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/photos/2007#photo"/> </entry>'; $fileSize = filesize($imgName); $fh = fopen($imgName,$fileSize); fclose($fh); $dataLength = strlen($rawImgXml) + $fileSize; $data = ""; $data .= "\nMedia multipart posting\n"; $data .= "--P4CpLdIHZpYqNn7\n"; $data .= "Content-Type: application/atom+xml\n\n"; $data .= $rawImgXml . "\n"; $data .= "--P4CpLdIHZpYqNn7\n"; $data .= "Content-Type: image/jpeg\n\n"; $data .= $imgData . "\n"; $data .= "--P4CpLdIHZpYqNn7--"; $header = array('GData-Version: 2','Content-Type: multipart/related; boundary=P4CpLdIHZpYqNn7;','Content-Length: ' . strlen($data),'MIME-version: 1.0'); $ret = ""; $ch = curl_init($albumUrl); $options = array( CURLOPT_SSL_VERIFYPEER=> false,$options); $ret = curl_exec($ch); curl_close($ch);