有没有人知道Flex的文件上传攻击,这将允许通过多部分表单发布文件到经过身份验证的Web服务? In this bug report from the Adobe site,用户报告:
如果此功能仅适用于此功能,则Flash不支持跨浏览器兼容 Javascript黑客
到目前为止,我一直无法制作这样的黑客。我不确定接下来该做什么。这是我到目前为止所尝试过的(所有这些都是不成功或不可能的)
答案 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
}