Страница 1 из 1
Загрузка фото в альбом JS
Добавлено: 19 апр 2011, 13:38
wald
Помогите с загрузкой изображений в альбом через iframe приложение.
Все делаю как в инструкции:
1. Создал форму для отправки файла
Код: Выделить всё
<form enctype="multipart/form-data" method="post" actions="" target="test_frame" id="upload_photo"> <input type="file" name="file1"> <input type="submit"></form><iframe name="test_frame"></iframe>
2. После нажатия кнопки отправить получаю адрес сервера с помощью вызова метода
photos.getUploadServer
Уставаливаю атрибут
actions для формы
upload_url и отправляю форму.
В iframe с именем
test_frame должен получить ответ от сервера после загрузки файла, но получаю дубликат своего приложения.
При переходе по адресу получаемому методом
photos.getUploadServer в браузере виден завертный json.
Код: Выделить всё
var p = true;$('#upload_photo').submit(function (){ if (p) return true; VK.api('photos.getUploadServer',{"test_mode":1,"aid":id}, function(data){ if (data.error) { showError(data); } if (data.response) { $('#upload_photo').attr('actions',data.response.upload_url); p = true; $('#upload_photo').submit(); } }); return false;});
Кто делал загрузку фотографий с помощью стандартных средств html, javascript помогите разобраться.
Или загрузка возможно только через Flash?
Re: Загрузка фото в альбом JS
Добавлено: 20 апр 2011, 09:18
mihvotak
Из своей html страницы не получится считать json пришедший с другого домена, я тож пробовал. Вместо тела iframe с ответом ВК получаешь тело основного iframe.
Не знаю получится ли из flash напрямую на ВК загрузить (политика безопасности мешает), а мы проблему решили через простенький php-скрипт, на который flash шлёт запрос c картинкой, а тот направляет его на вконтакт и возвращает ответ. Поскольку скрипт наш, то не возникает проблем с политикой безопасности (домен совпадает).
Re: Загрузка фото в альбом JS
Добавлено: 05 май 2011, 20:36
Ronaldo
Объясните, дайте пример, ссылку, ткните носом
как загрузить файл на сервер Вконтакте с помощью 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
У меня получается получить адрес для загрузки фотографий.
Почему то скрипт который находиться выше у меня вообще не работает, но я понял как можно отправлять пост запросы я это делаю с помощью этого
скрипта, но как можно им отправлять не просто текстовые значения а файл адресс которого я знаю он на сервере я не понял
Код: Выделить всё
function post_to_url(path, params, method) { method = method || "post"; // Set method to post by default, if not specified. // The rest of this code assumes you are not using a library. // It can be made less wordy if you use one. var form = document.createElement("form"); form.setAttribute("method", method); form.setAttribute("action", path); for(var key in params) { var hiddenField = document.createElement("input"); hiddenField.setAttribute("type", "hidden"); hiddenField.setAttribute("name", key); hiddenField.setAttribute("value", params[key]); form.appendChild(hiddenField); } document.body.appendChild(form); // Not entirely sure if this is necessary form.submit();}
И ещё если этот вопрос решается только через флеш, можете подробнее обяснить или же пример выложить.
И ещё почему нет этих примеров сразу в документации Вконтакте (у них что времени не было)?
Re: Загрузка фото в альбом JS
Добавлено: 06 май 2011, 09:43
wald
Основная проблема заключается в том, что политика безопасности браузеров не позволяет отправить форму стороннему серверу и получить от него ответ. Соответственно на 2 этапе не будут получены данные о заргуженных изображениях и вызвать метод photos.save дальше уже не получится. Во влеш как я понял из примеров размещенных здесь, такого ограничения нет, может ошибаюсь.
Для загрузки изображения нужно отправлять сам файл, а адрес здесь совсем не причем.
Тоесть если хотите загрузить файл со своего сервера, нужно получить адрес сервера загрузки, с чем проблем не возникает, потом через ajax или iframe как более привычно, вызвать скрипт на своем сервере, который уже отправит файл с картинкой на сервер вконтакте(полезна библиотека curl) и передаст в ответ JSON ответ от контакта, а потом уже вызываете метод photos.save для сохранения загруженных изображений. Для пользовательского изображение все тоже самое, только файл с изображением с помощью формы отправляете на свой сервер, а потом уже php скриптом на сервер вконтакте.
Re: Загрузка фото в альбом JS
Добавлено: 06 май 2011, 11:04
Ronaldo
Спасибо за ответ
wald.
Благодаря этой теме мне удалось то что я хотел
http://flapps.ru/forum/topic1564.html. Полное решение там есть.
Я счастлив!
Ура! Блин какой же я тупой