Flex hack用于经过身份验证的文件上传

时间:2011-10-27 18:16:34

标签: javascript flex file-upload

有没有人知道Flex的文件上传攻击,这将允许通过多部分表单发布文件到经过身份验证的Web服务? In this bug report from the Adobe site,用户报告:

  

如果此功能仅适用于此功能,则Flash不支持跨浏览器兼容   Javascript黑客

到目前为止,我一直无法制作这样的黑客。我不确定接下来该做什么。这是我到目前为止所尝试过的(所有这些都是不成功或不可能的)

1 个答案:

答案 0 :(得分:1)

最终这对我有用。我修改了我的Web服务以接受字节流而不是多部分文件。然后,我使用URLLoader将字节上传到服务。

private var fileReference:FileReference;

public function loadFile()
{
   fileReference.addEventListener(Event.COMPLETE, fileLoaded);
   fileReference.load();
}

private function fileLoaded(evt:Event):void{
   fileReference.removeEventListener(Event.COMPLETE, fileLoaded);
   startUpload();
}

public function startUpload():void {

   var xml:String = // xml to post along with the file ;
   var url:String = // url to the web service

   var bytes:ByteArray = new ByteArray();
   bytes.writeUTFBytes(fileReference.name);
   bytes.writeUTFBytes(xml);
   bytes.writeBytes(fileReference.data);
   bytes.position = 0;

   var urlLoader:URLLoader = new URLLoader();
   var request:URLRequest = new URLRequest(url);
   request.data = bytes;
   request.method = URLRequestMethod.POST
   request.contentType = "application/octet-stream";
   urlLoader.addEventListener(Event.COMPLETE, uploadComplete);
   urlLoader.addEventListener(flash.events.IOErrorEvent.IO_ERROR, uploadError);
   urlLoader.load(request);
}

private function uploadComplete(e:Event):void {
   // handle success
}

private function uploadError(e:Event):void {
   // handle failure
}