创建Picasa相册并使用PHP和cURL将图像上传到它
发布时间:2020-12-13 16:31:58 所属栏目:PHP教程 来源:网络整理
导读:我发现创建Picasa相册和上传图片的所有教程都使用了我尚未研究的Zend Framework. 可以使用PHP和cURL上传图片并创建相册吗? 我的图像存储在目录e:/ images中,图像信息存储在MySQL表中,如下所示: SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";CREATE TABLE IF NOT
我发现创建Picasa相册和上传图片的所有教程都使用了我尚未研究的Zend Framework.
可以使用PHP和cURL上传图片并创建相册吗? 我的图像存储在目录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 ; 我使用以下代码获取Google客户端身份验证码: <?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: 当我用php脚本上传照片时如何添加照片许可? 参考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呼叫进行身份验证.
//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 postingn"; $data .= "--P4CpLdIHZpYqNn7n"; $data .= "Content-Type: application/atom+xmlnn"; $data .= $rawImgXml . "n"; $data .= "--P4CpLdIHZpYqNn7n"; $data .= "Content-Type: image/jpegnn"; $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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |