上传文件,我希望从服务器获得XML响应。
所以,在php中,我这样做:
header("Content-type:text/xml");
echo"<whatever/>"; // any 100% valid XML
在flash中,我使用FileReference
类和FileReference.upload()
方法
var file:FileReference = new FileReference();
file.addEventListener(Event.SELECT, FileSelected);
file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploaded);
...
function FileSelected(e:Event)
{
var req:URLRequest=new URLRequest(Main.baseURL+"/upload.php");
req.method="POST";
try{file.upload(req,"userfile")}
catch(err:Error){Main.err("Can't upload",err,e)}
}
function uploaded(e:DataEvent)
{
var s:String=e.data;
trace(":"+s+":"); //output :<whatever/>: as expected
var xml:XML=new XML(s); // fails with Error #1088: The markup in the document following the root element must be well-formed.
}
似乎DataEvent.data
包含隐形垃圾,阻止它解析...
我目前的解决方案是手动切断第一个字符(0xFEFF):
function uploaded(e:DataEvent)
{
var s:String=e.data.slice(1); // if i manually cut it off - all works
trace(s);
var xml:XML=new XML(s);
}
答案 0 :(得分:0)
0xFEFF
是zero width no-break space。尝试从php代码中删除该xml header
。
答案 1 :(得分:0)
UTF BOM。无论生成您尝试上传的文件是什么,都应该配置而不是来添加它。