Загрузка фотографий с жесткого диска на Facebook с помощью API - PullRequest
0 голосов
/ 18 октября 2010

интересно, может ли кто-нибудь помочь мне.Несколько дней я искал помощь в публикации фотографий на 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>

1 Ответ

1 голос
/ 18 октября 2010

Clark,

Сценарий 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)}}

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

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

Поэтому аргументы, которые вы должны отправить в Facebook для загрузки фотографий, должны выглядеть примерно так:

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

$ args [$ _ FILES ['file'] ['name']] = '@'. $ _FILES ['file'] ['tmp_name'];

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

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

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

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

...