天天看點

flash,php上傳檔案

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;

}

?>