我发现创建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 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);

创建Picasa相册并使用PHP和cURL将图像上传到它的更多相关文章

  1. canvas中普通动效与粒子动效的实现代码示例

    canvas用于在网页上绘制图像、动画,可以将其理解为画布,在这个画布上构建想要的效果。本文详细的介绍了粒子特效,和普通动效进行对比,非常具有实用价值,需要的朋友可以参考下

  2. H5混合开发app如何升级的方法

    本篇文章主要介绍了H5混合开发app如何升级的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. canvas学习和滤镜实现代码

    这篇文章主要介绍了canvas学习和滤镜实现代码,利用 canvas,前端人员可以很轻松地、进行图像处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  4. localStorage的过期时间设置的方法详解

    这篇文章主要介绍了localStorage的过期时间设置的方法详解的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  5. 详解HTML5 data-* 自定义属性

    这篇文章主要介绍了详解HTML5 data-* 自定义属性的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  6. HTML5的postMessage的使用手册

    HTML5提出了一个新的用来跨域传值的方法,即postMessage,这篇文章主要介绍了HTML5的postMessage的使用手册的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. 教你使用Canvas处理图片的方法

    本篇文章主要介绍了教你使用Canvas处理图片的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  8. ios – 如何处理退款/取消应用内购买

    我正在尝试处理iOS的退款应用内购买.但我找不到明确的指导方针来做到这一点.所以我有一个会员类型的应用程序内购买功能,其中用户凭据不一定与itunes帐户绑定.当有人进行购买时,我可以参考哪种标识符,并且当他们通过苹果申请退款时具有相同的标识符?我需要立即取消会员资格.谢谢!解决方法我最终存储了收据字符串并运行cron来完成事务并查找取消字段.

  9. ios – Swift语言:如何调用SecRandomCopyBytes

    从Objective-C,我可以这样做:在Swift中尝试这个时,我有以下内容:但我得到这个编译器错误:data.mutableBytes参数被拒绝,因为类型不匹配,但我无法弄清楚如何强制参数.解决方法这似乎有效:

  10. 使用Firebase iOS Swift将特定设备的通知推送到特定设备

    我非常感谢PushNotifications的帮助.我的应用聊天,用户可以直接向对方发送短信.但是如果没有PushNotifications,它就没有多大意义.它全部设置在Firebase上.如何将推送通知从特定设备发送到特定设备?

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部