利用 Flash 8 上传文件

一直想搞这个功能, 想了很多歪门邪道, 未果!
昨天突然在 blueidea 上看到关于 Flash 8 的新特性 (虽然早就装上了 Flash 8 但一直没有仔细研究, 真是惭愧 :p) 中介绍了 flash 8 提供了上载和下载的接口, 马上下去研究了一下, 果然不错. 虽然上传还是需要后台脚本的支持, 但也足够我美上一阵子的了 :D
下面是研究成果, 不敢独享, 拿出来示众 :D
None.gifUploadFile.fla
None.gif
None.gif
None.gif
// 加载包
None.gif
import flash.net.FileReference;
None.gif
// 定义主角 FileReference 对象
None.gif
var fileRef:FileReference = new FileReference();
None.gif
// 定义 监听对象
None.gif
var fileLsn:Object = new Object();
None.gif
// 定义 文件类型数组 FileReference 对象的 browse 方法的参数
None.gif// description: 描述
None.gif// extension : 扩展名列表

None.gif
var fileTyp:Array = new Array({description:"Image files", extension:"*.jpg;*.gif"}, {description:"Document files", extension:"*.txt;*.doc"});
None.gifbtnBrowse
.onRelease = function() {
None.gif   
// 打开 "选择文件" 对话框
None.gif
   fileRef.browse(fileTyp);
None.gif};
None.gifbtnUpload
.onRelease = function() {
None.gif   
// 开始上传
None.gif
   fileRef.upload("uploadFile.php");
None.gif};
None.gifbtnClear
.onRelease = function() {
None.gif   strState
.text = "";
None.gif};
None.gif
// 选择文件事件
None.gif
fileLsn.onSelect = function(file:FileReference) {
None.gif   strState
.text += "onSelect '"+file.name+"'\n";
None.gif};
None.gif
// 取消选择
None.gif
fileLsn.onCancel = function(file:FileReference) {
None.gif   strState
.text += "Cancel!\n";
None.gif};
None.gif
// 打开文件开始上传
None.gif
fileLsn.onOpen = function(file:FileReference) {
None.gif   strState
.text += "Uploadingdot.gif '"+file.name+"'\n";
None.gif};
None.gif
// 上传成功
None.gif
fileLsn.onComplete = function(file:FileReference) {
None.gif   strState
.text += "File '"+file.name+"' upload successfull!\n";
None.gif};
None.gif
// 上传过程
None.gif
fileLsn.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
None.gif   strState
.text += "onProgress: "+file.name+" with bytesLoaded: "+bytesLoaded+" bytesTotal: "+bytesTotal+"\n";
None.gif};
None.gif
// HTTP 错误
None.gif
fileLsn.onHTTPError = function(file:FileReference, httpError:Number) {
None.gif   strState
.text += "HTTP ERROR: "+httpError+"\n";
None.gif};
None.gif
// IO 错误
None.gif
fileLsn.onIOError = function(file:FileReference):Void {
None.gif   strState
.text += "IO Error: "+file.name+"\n";
None.gif};
None.gif
// 安全错误
None.gif
fileLsn.onSecurityError = function(file:FileReference, errorString:String):Void {
None.gif   strState
.text += "onSecurityError: "+file.name+" errorString: "+errorString;
None.gif};
None.gif
// 绑定监听器
None.gif
fileRef.addListener(fileLsn);
None.gif
// 其他属性或事件请参考帮助中关于 FileReference 对象的章节
None.gif

None.gif[
Copy to clipboard]
None.gif
None.gif
None.gifUploadFile
.php
None.gif
None.gifCODE
:
None.gif
<?php
None.gif
// Flash 传递的文件表单 name 属性为 Filedata
None.gif
$fileName = $_FILES["Filedata"]["name"];
None.gif
$file = $_FILES["Filedata"]["tmp_name"];
None.gif
$path = "uploadFiles/";
None.gif
if (move_uploaded_file($file, $path . $fileName)){
None.gif   
// echo 1;
None.gif
}else{
None.gif   
// echo 0;
None.gif
}
None.gif
/*
None.gif* 只要上传代码就够了
None.gif* Flash 似乎不判断该文件的返回值
None.gif* 即使该文件报告错 Flash 也无法分析
None.gif* 所以最好保证这个文件不会出错
None.gif
*/
None.gif
?>
None.gif


描述:源文件下载
附件: 利用 Flash 8 上传文件_扩展名_86FlashUpload.rar (10 K) 下载次数:24