我正在尝试从客户端读取xml文件。 搜索后。我必须使用此代码将文件上传到服务器。
var imagesFilter:FileFilter = new FileFilter("*.jpg,*.gif,*.png", "*.jpg;*.gif;*.png;*.jpeg");
fileRef.browse([imagesFilter]);
但我想要做的是从客户端读取文件并解析它而不将其上传到服务器。 有谁能够帮我? 感谢
答案 0 :(得分:1)
代码示例:
private function onCreationComplete():void {
fileRef.addEventListener(Event.SELECT, selectHandler);
fileRef.addEventListener(Event.COMPLETE, completeHandler);
fileRef.addEventListener(flash.events.IOErrorEvent.IO_ERROR, onIoError);
fileRef.addEventListener(flash.events.DataEvent.UPLOAD_COMPLETE_DATA, responseHandler);
}
private function selectHandler(event:Event):void {
filename.text = fileRef.name;
}
private function selectFile():void {
try
{
var success:Boolean = fileRef.browse();
}
catch (error:Error)
{
trace("Unable to browse for files.");
}
}
private function onIoError(event:flash.events.IOErrorEvent):void{
Alert.show(rm.getString('ui_res', 'file_uppload_fail'), rm.getString('ui_res', 'connection_error'));
ModelLocator.getInstance().confManagerModel.isPending = false;
}
private function onUploadDataComplete(event:flash.events.DataEvent):void {
trace("onUploadDataComplete");
}
private function responseHandler( event:DataEvent ) :void {
var data:Object = JSON.decode(event.data as String);
// do anything with data
}
private function uploadFile():void
{
if(!submit.enabled){
return;
}
var request:URLRequest = new URLRequest("test")
try
{
fileRef.upload(request);
ModelLocator.getInstance().confManagerModel.isPending = true;
}
catch (error:Error)
{
Alert.show(rm.getString('ui_res', 'file_uppload_fail'), rm.getString('ui_res', 'error_on_server'));
}
}
private function completeHandler(event:Event):void
{
}
答案 1 :(得分:1)
我写了一个简单的flex应用程序,它要求文件,加载它,并在textarea中显示文件的内容。使用flex 4 SDK编译。
<?xml version="1.0" encoding="utf-8"?>
public function onInit():void {
m_FileRef = new FileReference();
m_FileRef.addEventListener(Event.SELECT, onBrowse);
m_FileRef.browse();
}
public function onBrowse(e:Event):void {
m_FileRef.addEventListener(Event.COMPLETE, onComplete);
m_FileRef.load();
}
public function onComplete(e:Event):void {
contentArea.text = m_FileRef.data.toString();
}
]]>
</mx:Script>
<mx:TextArea id="contentArea" width="100%" height="100%">
</mx:TextArea>
答案 2 :(得分:0)
您无法从用户计算机读取本地文件,因为Web应用程序的“沙盒”无法访问本地文件。然后你的上传文件到服务器Flash播放器使用标准浏览器API来做到这一点。哪些信息需要XML?
答案 3 :(得分:0)
您可以使用FileReference类中的方法“load”和属性“data”。我假设以下工作流程: