Загрузка фотографий с жесткого диска на Facebook с помощью API

Интересно, может ли кто-нибудь мне помочь. Несколько дней я искал помощь в том, как публиковать фотографии в Facebook с помощью API. Я наткнулся на следующий скрипт, который, кажется, работает для всех, однако я не знаю, как связать его с формой, где пользователи могут выбрать фотографию со своего жесткого диска и загрузить ее. Может кто-то указать мне верное направление?

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>

person Clark Caughey    schedule 18.10.2010    source источник


Ответы (1)


Кларк,

PHP-скрипт получает файл и его данные в переменной $_FILES.

Например. Если вы загружаете имя файла Image1.jpg, тогда массив $_FILES будет иметь следующие значения

array(1) { ["file"]=> array(5) { ["name"]=> string(21) "Image1.jpg" ["type"]=> string(10) "image/jpeg" [ "tmp_name"]=> string(23) "C:\wamp\tmp\phpD1DF.tmp ["error"]=> int(0) ["size"]=> int(355315) } }

Здесь name = фактическое имя файла type = тип файла tmp_name = путь к временному местоположению, куда файл загружается на сервер size = размер файла

Для загрузки файла на facebook значения, которые вас должны интересовать, должны быть указаны в "name" и "tmp_name".

Таким образом, аргументы, которые вы должны отправить в facebook для загрузки фотографии, должны выглядеть примерно так.

$args = array('message' => 'Фото из приложения', );

$args[$_FILES['файл']['имя']] = '@' . $_FILES['файл']['tmp_name'];

Я думаю, это должно сработать для вас.

Кстати, я проверил документ facebook для загрузки фотографий @ http://developers.facebook.com/docs/reference/api/photo они говорят, что имя файла должно быть передано в параметре "источник", поэтому, если приведенные выше аргументы не работают для вас, вы можете попробовать

$args = array( 'message' => 'Фото из приложения', 'source' => '@' . $_FILES['file']['tmp_name'] );

Попробуйте :) Надеюсь, это поможет.

person Kartik    schedule 18.10.2010