使用API​​将照片从硬盘上载到Facebook

时间:2010-10-18 14:01:42

标签: php facebook photo facebook-graph-api

想知道是否有人可以帮助我。我一直在寻找有关如何使用API​​将照片发布到Facebook的帮助。我遇到了以下似乎适用于所有人的脚本,但我不确定如何将其连接到用户可以从硬盘驱动器中选择照片并上传的表单。有人能指出我正确的方向吗?

PHP代码:

$token = $session['access_token'];
$file= 'photo.jpg';
$args = array(
'message' => 'Photo from application',
);
$args[basename($file)] = '@' . realpath($file);

$ch = curl_init();
$url = 'https://graph.facebook.com/me/photos?access_token='.$token;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
$data = curl_exec($ch);

表单代码:

<form action="<?=$PHP_SELF;?>" enctype="multipart/form-data" method="POST"> 
 <input name="MAX_FILE_SIZE" type="hidden" value="10000000" /> 
 <input id="file" name="file" type="file" /> 
 <input name="submit" type="submit" value="Upload" />
</form>

1 个答案:

答案 0 :(得分:1)

克拉克,

php脚本在$ _FILES变量中接收文件及其详细信息。

对于Eg。如果要上传文件名Image1.jpg,那么$ _FILES数组将具有以下值

array(1){            [ “文件”] =&GT; array(5){                                   [ “名称”] =&GT; string(21)“Image1.jpg”                                   [ “型”] =&GT; string(10)“image / jpeg”                                   [ “tmp_name的值”] =&GT; string(23)“C:\ wamp \ tmp \ phpD1DF.tmp                                   [ “错误”] =&GT; INT(0)                                   [ “大小”] =&GT; INT(355315)                                 }          }

此处, name =实际文件名       type =文件类型        tmp_name =文件在服务器上传的临时位置的路径       size =文件大小

要将文件上传到Facebook,您应该对“name”“tmp_name”感兴趣的值。

因此,您应该发送给Facebook上传照片的论据应该是这样的

$ args = array( 'message'=&gt; '来自应用程序的照片', );

$ args [$ _ FILES ['file'] ['name']] ='@'。 $ _FILES [ '文件'] [ 'tmp_name的值'];

我认为这应该适合你。

顺便说一句,我检查了facebook doc for photo upload @ http://developers.facebook.com/docs/reference/api/photo他们说文件名应该在param“source”中传递,所以如果上述参数不适合你,你可以试试

$ args = array( 'message'=&gt; '来自应用程序的照片', 'source'=&gt; '@'。 $ _FILES [ '文件'] [ 'tmp_name的值'] );

尝试一下:) 希望这会有所帮助。