2012-02-26 2 views
0

Мне нужно проверить скорость загрузки клиентской машины в AS 3.0. Поэтому я решил загрузить изображение, встроенное в swf, на сервер без взаимодействия с пользователем. У вас есть идея о том, как это сделать?Автоматическая загрузка в Action Script 3

ответ

1

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

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

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

+0

Спасибо вам за ответ. Я нашел способ сделать это. –

+0

Сначала я конвертирую встроенное изображение в массив байтов в соответствии с этим, [convert-embed-image-to-bytearray] (http://flexbuilderblog.wordpress.com/2010/01/25/convert-embed-image-to- bytearray /) И затем я отправляю этот массив байтов на сервер, в соответствии с этим (с модификацией), [upload-bitmapdata-snapshot-to-server-in-as3] (http://www.quietless.com/ кухня/upload-bitmapdata-snapshot-to-server-in-as3 /) И измерьте время, которое потребуется. –

0

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

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

И отправить этот 200Кб ByteArray на сервер с помощью 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"); 
} 
Смежные вопросы