Автоматическая загрузка в Action Script 3 - PullRequest
0 голосов
/ 26 февраля 2012

Мне нужно проверить скорость загрузки клиентского компьютера в AS 3.0. Поэтому я решил загрузить изображение, которое встраивается в SWF, на сервер без взаимодействия с пользователем. У вас есть идеи о том, как это сделать?

Ответы [ 2 ]

1 голос
/ 26 февраля 2012

Самый простой способ - отправлять любые данные в двоичном виде по запросу.Загрузка, однако, это другое дело, потому что это также требует ввода-вывода на стороне сервера.

Непонятно, каковы ваши параметры и / или требования на стороне сервера.Должен ли он имитировать поведение HTML-формы (т. Е. Должен ли он отправлять заголовки данных из нескольких частей?) Или вы можете просто использовать контент-тип: application / octet-stream?Это отличается тем, что сначала это можно сделать только через FileReference или потребовать, чтобы вы пропатчили сервер для отправки файлов политики в ответ на конкретные запросы + внедрили протокол HTTP самостоятельно, используя сокеты.Хотя отправка простых двоичных данных (второй вариант) проще в реализации и имеет меньше ограничений, тем не менее, вам придется самостоятельно управлять вводом-выводом, необходимым для сохранения загруженных данных на сервере.

Обратите внимание, что тестирование поведения FileReferenceавтоматически невозможно, потому что для этого требуется, чтобы пользователи нажимали, и отправляет данные только в ответ на события щелчка.

0 голосов
/ 27 февраля 2012

Привет, я нашел лучший способ сделать это без изображения.Сначала я создал байтовый массив

private var _byteArray:ByteArray = new ByteArray();
for(var i:int = 0; i < 200 * 1024;i++)
{
  _byteArray.writeByte(1);
}

и отправил этот 200-килобайтный байтовый массив на сервер, используя urlloader и urlrequest

uploadURL = new URLRequest();
uploadURL.url = "upload.php";
uploadURL.contentType = 'application/octet-stream';
uploadURL.method = URLRequestMethod.POST;
uploadURL.data = _byteArray;
urlLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlLoader.load(uploadURL);

protected function completeHandler(event:Event):void
{
   trace("Upload Complete");
}
...