со стороны сервера node.js: загрузка фото на facebook

Согласно документации facebook, http://developers.facebook.com/docs/reference/api/album/, чтобы загрузить фото, тип источника должен быть "multipart/form-data"

Теперь я получил файл изображения от клиента к серверу в node.js, используя «форму подключения». и я использую модуль «facebook-js» для загрузки фотографии в facebook как,

app.post('/', function(req, res, next){

  req.form.complete(function(err, fields, files){
    if (err) {
      next(err);
    } else {
      console.log('uploaded ', files.source.filename, 'to', files.source.path);

      fb.apiCall('POST', '/me/photos',
        {access_token: fields.access_token, 
             message: fields.message, 
             **source:files.source**},
        function (error, response, body) {
            if (error) {
                console.log('Error in facebook Photo UPLOAD', error);
                return;
            }
          res.redirect('back');
        }
      );

Вышеприведенное выдает ошибку, поскольку files.source не закодирован как «multipart/form-data». Могу ли я узнать, что здесь нужно сделать? Должен ли я поместить файл в память, а затем использовать его в исходном коде?


person user644745    schedule 16.09.2011    source источник


Ответы (1)


Вы не можете сделать это, используя текущую реализацию facebook-js (я предполагаю, что это это) . Он использует библиотеку запросов узла, которая, по-видимому, не имеет встроенной поддержки отправки multipart/form-data HTTP-запросов. Вы можете реализовать отправку multipart/form-data (см. это для более длинного примера), но вам, вероятно, потребуется разветвить исходную библиотеку.

person Femi    schedule 16.09.2011
comment
Спасибо. В настоящее время нет никаких модулей facebook, которые могут публиковать изображения в facebook? - person user644745; 16.09.2011
comment
Не то, чтобы я знал: все модули, похоже, используют request, который не имеет встроенной поддержки. Взгляните на groups.google.com/group/nodejs/browse_thread/thread/: здесь показан фрагмент необработанного кода узла, который обрабатывает публикацию фотографии. Возможно, вы сможете адаптировать его для своих целей. - person Femi; 17.09.2011
comment
В ПОРЯДКЕ. это хорошая информация. А как насчет других сервисов, таких как flickr? Есть ли поддержка для этого? - person user644745; 17.09.2011
comment
Только что увидел сообщение на stackoverflow.com/questions /3439252/ и мне было интересно, что 'source'=› '@'.$fname делает в PHP в $fname=/tmp/foo.jpg; $attachment = array( 'access_token' => $facebook->getAccessToken(), 'name' => substr(event_name), 'description' => my_description, 'start_time' => my_start_time, 'link' => my_link, ' source'=› '@'.$fname ); - person user644745; 17.09.2011
comment
Это зависит от того, что PHP SDK использует расширение PHP curl. Синтаксис @ используется для указания curl прикрепить содержимое. Curl отлично справляется с загрузкой multipart/form-data. - person Femi; 19.09.2011