這一個範例是由好友山羊所提供,而他寫了好幾個版本,目前梅干桑還在整理中,在整理的同時,先分享一篇簡易的檔案上傳方法, 由於山羊是搭配cfm,但一時之間突然找不到那隻程式,所以改由php來作介紹, 其實並不是直接利用Flex就可完成上傳的動作,這中間還需要搭配Server端的程式,如:cfm、php、asp、aspx…等, Flex只是將資料透過POST的方式丟出來,之後上傳的動作還是要靠Server端的程式來完成,由於該範例擁有上傳的功能,因此就沒提供線上範例供各位試用。
範例操作預覽:
FileUpload4Flex.mxml
<?xml version=“1.0” encoding=“utf-8”?>
mx:Script
<![CDATA[ import mx.utils.XMLUtil; import mx.utils.ObjectProxy; import mx.collections.XMLListCollection; import mx.controls.Alert; import mx.rpc.events.AbstractEvent; private var file:FileReference = new FileReference();
private function uploadHandler():void{
this.FileBrowser.browse();
}
//送出檔案
private function SendFile(event:Event):void{
var url:URLRequest = new URLRequest(“http://127.0.0.1/savefile.php");
event.target.upload(url,“Filedata”);//Filedata要與接收的.php或.aspx或.cmf中的名稱相同
}
//上傳的進度表
private function UpLoadProgess(event:ProgressEvent):void{
this.progessbar.setProgress((event.bytesLoaded/event.bytesTotal)*100,100);
}
//當檔案上傳成功
private function UpLoadAccess():void{
Alert.show(“檔案上傳成功”);
}
//上傳失敗
private function UpLoadErr(event:IOErrorEvent):void{
Alert.show(“上傳失敗”,“IOError”);
}
]]>
/mx:Script
savefile.php
<?php $uploaddir = ‘tmp/’; $uploadfile = $uploaddir . basename($_FILES[‘Filedata’][‘name’]); $temploadfile = $_FILES[‘Filedata’][‘tmp_name’]; move_uploaded_file($temploadfile , $uploadfile); ?>
savefile.cfm
[範例下載]