Загрузка фото в альбом JS

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)

Загрузка фото в альбом JS

Сообщение wald » 19 апр 2011, 13:38

Помогите с загрузкой изображений в альбом через iframe приложение.
Все делаю как в инструкции:
1. Создал форму для отправки файла
  1. <form enctype="multipart/form-data" method="post" actions="" target="test_frame" id="upload_photo">
  2.                 <input type="file" name="file1">
  3.                 <input type="submit">
  4. </form>
  5. <iframe name="test_frame"></iframe> 

2. После нажатия кнопки отправить получаю адрес сервера с помощью вызова метода photos.getUploadServer
Уставаливаю атрибут actions для формы upload_url и отправляю форму.
В iframe с именем test_frame должен получить ответ от сервера после загрузки файла, но получаю дубликат своего приложения.
При переходе по адресу получаемому методом photos.getUploadServer в браузере виден завертный json.
  1.  var p = true;
  2. $('#upload_photo').submit(function (){
  3.       if (p) return true;
  4.       VK.api('photos.getUploadServer',{"test_mode":1,"aid":id}, function(data){
  5.                 if (data.error) {
  6.                      showError(data);
  7.                  }
  8.                  if (data.response) {
  9.                        $('#upload_photo').attr('actions',data.response.upload_url);
  10.                        p = true;
  11.                         $('#upload_photo').submit();
  12.                    }
  13.       });
  14.       return false;
  15. });


Кто делал загрузку фотографий с помощью стандартных средств html, javascript помогите разобраться.
Или загрузка возможно только через Flash?
wald

 
Автор темы
Сообщения: 3
Зарегистрирован: 19 апр 2011, 12:51
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Загрузка фото в альбом JS

Сообщение mihvotak » 20 апр 2011, 09:18

Из своей html страницы не получится считать json пришедший с другого домена, я тож пробовал. Вместо тела iframe с ответом ВК получаешь тело основного iframe.
Не знаю получится ли из flash напрямую на ВК загрузить (политика безопасности мешает), а мы проблему решили через простенький php-скрипт, на который flash шлёт запрос c картинкой, а тот направляет его на вконтакт и возвращает ответ. Поскольку скрипт наш, то не возникает проблем с политикой безопасности (домен совпадает).

За это сообщение автора mihvotak поблагодарил:
wald
mihvotak

 
Сообщения: 1
Зарегистрирован: 20 апр 2011, 09:11
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: Загрузка фото в альбом JS

Сообщение Ronaldo » 05 май 2011, 20:36

Объясните, дайте пример, ссылку, ткните носом :) как загрузить файл на сервер Вконтакте с помощью iframe , мой файл это картинка с известным адресом (на сервере где и iframe приложние) вот, как её передать POST запросом с помощью JS.
Из этих пунктов
Загрузка фотографий на сервер ВКонтакте от имени пользователя осуществляется приложением в 3 этапа:

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

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

В ответ приложение получает следующие данные в формате JSON:

{"server": '1', "photos_list": '2,3,4', "aid": '5', "hash": '12345abcde'}


3. С помощью метода photos.save приложение передает серверу полученные данные (server, photos_list, aid и hash) и получает данные о загруженных изображениях.

Фотографии загружены.

Не понятен пункт 2
У меня получается получить адрес для загрузки фотографий.
Почему то скрипт который находиться выше у меня вообще не работает, но я понял как можно отправлять пост запросы я это делаю с помощью этого
скрипта, но как можно им отправлять не просто текстовые значения а файл адресс которого я знаю он на сервере я не понял
  1. function post_to_url(path, params, method) {
  2.     method = method || "post"; // Set method to post by default, if not specified.
  3.  
  4.     // The rest of this code assumes you are not using a library.
  5.     // It can be made less wordy if you use one.
  6.     var form = document.createElement("form");
  7.     form.setAttribute("method", method);
  8.     form.setAttribute("action", path);
  9.  
  10.     for(var key in params) {
  11.         var hiddenField = document.createElement("input");
  12.         hiddenField.setAttribute("type", "hidden");
  13.         hiddenField.setAttribute("name", key);
  14.         hiddenField.setAttribute("value", params[key]);
  15.  
  16.         form.appendChild(hiddenField);
  17.     }
  18.  
  19.     document.body.appendChild(form);    // Not entirely sure if this is necessary
  20.     form.submit();
  21. }


И ещё если этот вопрос решается только через флеш, можете подробнее обяснить или же пример выложить.
И ещё почему нет этих примеров сразу в документации Вконтакте (у них что времени не было)?
Ronaldo

 
Сообщения: 9
Зарегистрирован: 28 апр 2011, 19:17
Благодарил (а): 6 раз.
Поблагодарили: 1 раз.

Re: Загрузка фото в альбом JS

Сообщение wald » 06 май 2011, 09:43

Основная проблема заключается в том, что политика безопасности браузеров не позволяет отправить форму стороннему серверу и получить от него ответ. Соответственно на 2 этапе не будут получены данные о заргуженных изображениях и вызвать метод photos.save дальше уже не получится. Во влеш как я понял из примеров размещенных здесь, такого ограничения нет, может ошибаюсь.
Для загрузки изображения нужно отправлять сам файл, а адрес здесь совсем не причем.
Тоесть если хотите загрузить файл со своего сервера, нужно получить адрес сервера загрузки, с чем проблем не возникает, потом через ajax или iframe как более привычно, вызвать скрипт на своем сервере, который уже отправит файл с картинкой на сервер вконтакте(полезна библиотека curl) и передаст в ответ JSON ответ от контакта, а потом уже вызываете метод photos.save для сохранения загруженных изображений. Для пользовательского изображение все тоже самое, только файл с изображением с помощью формы отправляете на свой сервер, а потом уже php скриптом на сервер вконтакте.

За это сообщение автора wald поблагодарил:
Ronaldo
wald

 
Автор темы
Сообщения: 3
Зарегистрирован: 19 апр 2011, 12:51
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.

Re: Загрузка фото в альбом JS

Сообщение Ronaldo » 06 май 2011, 11:04

Спасибо за ответ wald.
Благодаря этой теме мне удалось то что я хотел http://flapps.ru/forum/topic1564.html. Полное решение там есть.
Я счастлив! :D Ура! Блин какой же я тупой :)
Ronaldo

 
Сообщения: 9
Зарегистрирован: 28 апр 2011, 19:17
Благодарил (а): 6 раз.
Поблагодарили: 1 раз.


Вернуться в Создание IFrame-приложений ВКонтакте



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron