Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Загрузка фотографий на стену пользователя и IFRAME (http://www.flasher.ru/forum/showthread.php?t=170857)

Art_133 03.11.2011 16:27

Загрузка фотографий на стену пользователя и IFRAME
 
Привет.
Тип приложения: - iFrame.
Пытаюсь запостить фотографию на стену.
Делаю всё по инструкции:
Код:

1. С помощью метода photos.getWallUploadServer приложение узнает http-адрес для загрузки фотографии на стену текущего пользователя, другого пользователя или группы в зависимости от переданных параметров uid или gid.

2. Приложение формирует POST-запрос на полученный адрес.
Запрос должен включать поле photo, содержащее файл с изображением (JPG, PNG, BMP или GIF)

Проблема возникает на шаге 2. Когда я пытаюсь создать запрос и загрузить фотку на сервер vk:
Код:

Error #2044: Необработанный securityError:. text=Error #2048: Нарушение изолированной среды: http://some-domain.ru/flash/bin-release/Main.swf не может загрузить данные из http://cs4316.vkontakte.ru/upload.ph...=1&wallphoto=1.
        at com.social.vk::VKManager/fetchWallImageUploadServer()
        at MethodInfo-1183()
        at vk::APIConnection/apiCallback()

Логично, флеш находится вне безопасной зоны (вне домена vkontakte). Как быть, как загрузить фотографию на сервер, со стороннего, не безопасного, домена?

П.С. Если Тип приложения выставить flash (не iFrame), всё работает.

Подскажите решение для iFrame приложения.
Спасибо.

YETI_UA 06.11.2011 14:28

Нужно создать на сервере php скрипт, который будет загружать фотографию в VK

Владимир Буквин 28.12.2011 13:19

вот скрипт
PHP код:

<?php
error_reporting
(E_ALL);
$curlOptions curl_init();
curl_setopt($curlOptionsCURLOPT_URL$_POST['Filename']);
curl_setopt($curlOptionsCURLOPT_RETURNTRANSFER1);
curl_setopt($curlOptionsCURLOPT_HEADER0);
curl_setopt($curlOptionsCURLOPT_POST1);
$data = array('Filename' => 'photo.png''photo' => $_POST['photo'], 'Upload' => 'Submit Query');
curl_setopt($curlOptionsCURLOPT_POSTFIELDS$data);
$content curl_exec($curlOptions);
curl_close($curlOptions);
echo 
$content;
?>

но у меня все равно не работает. приходят данные
{"mid": "122716583", "gid": "0", "server": "10870", "photo": "", "hash": "5496f0769fe5e6002f2283668c9798c9"}
поле photo приходит пустое

Андрей911 29.12.2011 20:40

Я тоже недавно запустил приложение где флешка в iframe и была такая же проблема. Решил ее способом который уже предложен выше.
Временно переключить в настройках приложение на flash и загрузить в дополнительные swf файлы флешку, которую и вставить в iframe. Тогда исключений безопасности не возникает и фотка грузится на стену.
Правда единственное немного неудобно обновлять swf, так как не знаешь какая ссылка будет.

Владимир Буквин 29.12.2011 20:51

да - тоже решил эту проблему тем же способом. Но надо научиться делать это и с помощью php. За Iframe будущее. скоро все социальные сети могут перейти именно к этой системе

Андрей911 29.12.2011 20:57

А $_POST идет из флешки? Она же не может передавать обычным постом текст и ByteArray.
Если $_POST['photo'] в Base64, то его надо декодировать вначале, а если это ByteArray, то его нужно доставать из $GLOBALS['HTTP_RAW_POST_DATA']

http://php.net/manual/ru/reserved.va...awpostdata.php

Владимир Буквин 30.12.2011 10:09

да - не может передавать одновременно текст и картинку, - я такого способа не знаю по крайней мере.
Filename = photo.png
photo = photo.png
Upload = Submit Query

такой пост образуется при передаче данных через MultipartUrlLoader
эта часть данных в виде multipart
а так - ото все biteArray
спасибо! - ваш ответ мне оказался полезен. Будет время - поэкспериментирую


Добавлено через 8 минут
)как я передавал картинку и url по которому ее надо передать дальше?
я посылал multipart c filename = myUrl, затем на сервере заменял его на photo.png затем отправлял дальше. наверное здесь я намудрил что - то)
Еще использовал другой способ
передавал post c двумя строковыми полями -url и byteArray.
byteArray передовал символами от 0 до 9. например пробел я заменял на 032.
Затем на сервере это все декодировал обратно
этот метод мне тоже не помог)

Андрей911 30.12.2011 10:27

Вы бы попробовали у вас картинка до сервера вообще доходит?
Например разбить задачу на 2 - получить картинку из приложения и сохранить ее на сервере в файл, а потом прочитать картинку из файла и передать на контакт.

Так хоть будет понятно на каком этапе проблема возникает

Владимир Буквин 30.12.2011 12:45

До сервера доходит. Мои напарники сейчас как раз занимаются передачей картинки на сервер и сохранением ее на том же сервере. Как будет готово - сразу выложу результат здесь и ссылку на здесь там). или наоборот.

Андрей911 30.12.2011 13:26

Думаю проблема в том, что cURL посылает не multipart.

Вот нашел ссылки в интернет http://vedovini.net/2009/08/posting-...ata-using-php/
http://apptools.com/phptools/forms/forms5.php

ПС. Если получится, то поделитесь кодом. Тоже надо)))

Добавлено через 32 минуты
Вот на русском еще http://www.web-junior.net/otpravka-p...ravka-fajjlov/


Часовой пояс GMT +4, время: 08:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.