2011
03.11
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);
}
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 и отправляет файл на сервер.


No Comment.
Add Your Comment