from:http://www.alixixi.com/program/a/2008050731573.shtml
一直想搞這個功能, 想了很多歪門邪道, 未果!
昨天突然在 blueidea 上看到關于 Flash 8 的新特性 (雖然早就裝上了 Flash 8 但一直沒有仔細研究, 真是慚愧 :p) 中介紹了 flash 8 提供了上載和下載下傳的接口, 馬上下去研究了一下, 果然不錯. 雖然上傳還是需要背景腳本的支援, 但也足夠我美上一陣子的了 :D
下面是研究成果, 不敢獨享, 拿出來示衆 :D
UploadFile.fla
CODE:
// 加載包
import flash.net.FileReference;
// 定義主角 FileReference 對象
var fileRef:FileReference = new FileReference();
// 定義 監聽對象
var fileLsn:Object = new Object();
// 定義 檔案類型數組 FileReference 對象的 browse 方法的參數
// description: 描述
// extension : 擴充名清單
var fileTyp:Array = new Array({description:"Image files", extension:"*.jpg;*.gif"}, {description:"Document files", extension:"*.txt;*.doc"});
btnBrowse.onRelease = function() {
// 打開 "選擇檔案" 對話框
fileRef.browse(fileTyp);
};
btnUpload.onRelease = function() {
// 開始上傳
fileRef.upload("uploadFile.php");
};
btnClear.onRelease = function() {
strState.text = "";
};
// 選擇檔案事件
fileLsn.onSelect = function(file:FileReference) {
strState.text += "onSelect '"+file.name+"'/n";
};
// 取消選擇
fileLsn.onCancel = function(file:FileReference) {
strState.text += "Cancel!/n";
};
// 打開檔案開始上傳
fileLsn.onOpen = function(file:FileReference) {
strState.text += "Uploading... '"+file.name+"'/n";
};
// 上傳成功
fileLsn.onComplete = function(file:FileReference) {
strState.text += "File '"+file.name+"' upload successfull!/n";
};
// 上傳過程
fileLsn.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
strState.text += "onProgress: "+file.name+" with bytesLoaded: "+bytesLoaded+" bytesTotal: "+bytesTotal+"/n";
};
// HTTP 錯誤
fileLsn.onHTTPError = function(file:FileReference, httpError:Number) {
strState.text += "HTTP ERROR: "+httpError+"/n";
};
// IO 錯誤
fileLsn.onIOError = function(file:FileReference):Void {
strState.text += "IO Error: "+file.name+"/n";
};
// 安全錯誤
fileLsn.onSecurityError = function(file:FileReference, errorString:String):Void {
strState.text += "onSecurityError: "+file.name+" errorString: "+errorString;
};
// 綁定監聽器
fileRef.addListener(fileLsn);
// 其他屬性或事件請參考幫助中關于 FileReference 對象的章節
UploadFile.php
CODE:
<?php
// Flash 傳遞的檔案表單 name 屬性為 Filedata
$fileName = $_FILES["Filedata"]["name"];
$file = $_FILES["Filedata"]["tmp_name"];
$path = "uploadFiles/";
if (move_uploaded_file($file, $path . $fileName)){
// echo 1;
}else{
// echo 0;
}
?>