我正在Facebook上开发一个应用程序,它要求用户在我的服务器上上传他们的图像,我可以将它发布到他们的页面上。我无法将该图片发布到Facebook,但是如果只有消息存在,它会被发布到很好。我觉得问题是heroku的/ tmp目录,因为它以不同的方式处理上传的文件然后正常的php的东西。我不知道绝对路径是服务器(MYAPP.herokuapp.com/tmp)还是应用程序.facebook.com / tmp。我需要在那里显式创建一个tmp文件夹,如果是这样的话。 这是我的“POST”代码的片段:
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["uploadedfile"]["name"]));
if ((($_FILES["uploadedfile"]["type"] == "image/gif")
|| ($_FILES["uploadedfile"]["type"] == "image/jpeg")
|| ($_FILES["uploadedfile"]["type"] == "image/png")
|| ($_FILES["uploadedfile"]["type"] == "image/pjpeg"))
&& ($_FILES["uploadedfile"]["size"] < 20000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["uploadedfile"]["error"] > 0)
{
echo "invalid picture ..please try again";
}
else
{
echo "successful";
}
}
else
{
echo "invalid picture ..please try again";
}
$ext=explode("image/", $_FILES["uploadedfile"]["type"]);
foreach($ext as $e)
{
$v .=$e ;
}
$path ='https://apps.facebook.com/pagecron'.$_FILES['uploadedfile']['tmp_name'].'.'
.$v;
$parameters = array('message' => $_POST['message'],
'picture' => $path,
'link' => $_POST['link'],
'name' => $_POST['name'],
'caption' => $_POST['caption'],
'description' => $_POST['description']
);
答案 0 :(得分:1)
你可以用这个:
if(session_id()){}
else{session_start();}
$facebook->setFileUploadSupport("http://" . $_SERVER['SERVER_NAME']);
$x=realpath($_FILES['source']['tmp_name']);
$parameters = array('message' => $_POST['message'],'source' =>'@' . $x );
$parameters['access_token'] = $_SESSION['active']['access_token'];
$check=$facebook->api('/me/photos','POST',$parameters);