Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   POST-запрос с полем 'photo' (http://www.flasher.ru/forum/showthread.php?t=137512)

Vogd 15.03.2010 16:41

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


Поясните пожалуйста, что такое "поле"?
Я получил ByteArray картинки, которую хочу отправить. Как мне это сделать?

Так?

Код AS3:

var jpg_binary:ByteArray = encoded_jpg.encode(bmd);
var req:URLRequest = new URLRequest(upload_url);
req.method = URLRequestMethod.POST;
req.data = jpg_binary;
req.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));
 
var loader:URLLoader = new URLLoader();
loader.load(req);
loader.addEventListener(Event.COMPLETE, Complete);

Спасибо!

udaaff 15.03.2010 18:42

Посмотри в этой группе http://vkontakte.ru/club13587210. Есть класс для загрузки фото. Правда там несколько небольших недоработок есть.
Если есть желание самостоятельно разобраться, то читай http://tools.ietf.org/html/rfc1867
И хелп по FileReference (в начале будет пример запроса).

Vogd 15.03.2010 19:00

Как я понял, FileReference умеет грузить файл по ссылке или открывать окошко для выбора файла. А как в него запихнуть уже загруженный файл в виде ByteArray?

Это возможно? Если да, то пойду читать хелпы.

udaaff 15.03.2010 19:40

Я не про то, что файлреференсом грузить (им только локальный файл загрузить можно). А про то, что там пример запроса вначале идет.

ratin 15.03.2010 21:13

Вы знаете, как составляются формы в HTML?

Vogd 16.03.2010 11:31

udaaff,

В хелпе по FileReference вот такой пример запроса:

PHP код:

POST /handler.cfm HTTP/1.1 
  Accept
text/*
  Content-Type: multipart/form-data; 
  boundary=----------Ij5ae0ae0KM7GI3KM7ei4cH2ei4gL6 
  User-Agent: Shockwave Flash 
  Host: [url]www.example.com[/url] 
  Content-Length: 421 
  Connection: Keep-Alive 
  Cache-Control: no-cache
  
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Filename"
  
  MyFile.jpg
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="photo"; filename="MyFile.jpg"
  Content-Type: application/octet-stream
  
  FileDataHere
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Upload"
  
  Submit Query
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7-- 

И я не понимаю, как из этого мне подчерпнуть информацию по поводу добавления к запросу "поля" с фотографией.

в этой группе http://vkontakte.ru/club13587210 все действия опять же происходят с помощью FileReference.

Я по прежнему не понимаю, как к запросу присоединить "поле" photo с фотографией.

udaaff 16.03.2010 12:24

Класс PhotoLoader смотрите.

Vogd 16.03.2010 15:27

Класс PhotoLoader загружает картинки в альбом. А мне нужно на стенку((

udaaff 16.03.2010 15:39

Вообще есть и на стенку. Просто там старая версия :) Сделайте по аналогии, или подождите день другой пока зальется новая.

Vogd 16.03.2010 17:04

udaaff, это вы автор того Апи?
Сделал по аналогии запрос на загрузку фотографии. И оно даже работает!

Но, если залить флешку в контакт, то перестает выполняться запрос. И ни один из эвентов не срабатывает. Что это может быть?

Код AS3:

var jpg_binary:ByteArray = encoded_jpg.encode(bmd);
 
var mdata:MultipartData = new MultipartData();
 
var urlRequest = new URLRequest(data.upload_url);
urlRequest.method = URLRequestMethod.POST;
urlRequest.contentType = "multipart/form-data; boundary=" + MultipartData.BOUNDARY;
mdata.addFile(jpg_binary, "photo");
 
urlRequest.data = mdata.data;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, urlLoader_completeHandler);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
urlLoader.addEventListener(Event.OPEN, openHandler);
urlLoader.addEventListener(ProgressEvent.PROGRESS, progressHandler);
urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
 
urlLoader.load(urlRequest);



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

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