天天看点

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;

}

?>