2011
03.11

Порой надо загрузить на сервер файлы, сгенерированные программно – скриншоты, архивы и другое. Из-за ограничений безопасности FileReference’у [ru] необходимо участие пользователя для загрузки файлов – при выборе внешнего файла для загрузки – заполняются все его хэдеры.
Обойти это ограничение можно используя класс UploadPostHelper.

Функция загрузки будет выглядеть так:

private function uploadFile(ba:ByteArray, fileName:String):void {
var urlRequest:URLRequest = new URLRequest();
  urlRequest.url = uploadPath;
  urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
  urlRequest.method = URLRequestMethod.POST;
  urlRequest.data = UploadPostHelper.getPostData(fileName, ba);
  urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));

  var urlLoader:URLLoader = new URLLoader();
  urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
  urlLoader.addEventListener(Event.COMPLETE, completeHandler);
  urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioError);
  urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSError);
  urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onhttp);
  urlLoader.load(urlRequest);
}

Здесь можно скачать пример проекта (flashdevelop, клиентская часть), который архивирует текстовые данные используя FZip и отправляет файл на сервер.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

No Comment.

Add Your Comment

*