⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileitem.as

📁 用flash做的网页上传工具
💻 AS
字号:
import flash.net.FileReference;

class FileItem
{
	private static var file_id_sequence:Number = 0;		// tracks the file id sequence

	private var postObject:Object;
	public var file_reference:FileReference;
	public var id:String;
	public var index:Number = -1;
	public var file_status:Number = 0;
	private var js_object:Object;
	
	public static var FILE_STATUS_QUEUED:Number			= -1;
	public static var FILE_STATUS_IN_PROGRESS:Number	= -2;
	public static var FILE_STATUS_ERROR:Number			= -3;
	public static var FILE_STATUS_SUCCESS:Number		= -4;
	public static var FILE_STATUS_CANCELLED:Number		= -5;
	public static var FILE_STATUS_NEW:Number			= -6;	// This file status should never be sent to JavaScript
	
	public function FileItem(file_reference:FileReference, control_id:String, index:Number)
	{
		this.postObject = {};
		this.file_reference = file_reference;
		this.id = control_id + "_" + (FileItem.file_id_sequence++);
		this.file_status = FileItem.FILE_STATUS_QUEUED;
		this.index = index;
		
		this.js_object = {
			id: this.id,
			index: this.index,
			name: this.file_reference.name,
			size: this.file_reference.size,
			type: this.file_reference.type || "",
			creationdate: this.file_reference.creationDate || new Date(0),
			modificationdate: this.file_reference.modificationDate || new Date(0),
			filestatus: this.file_status,
			post: this.GetPostObject()
		};
		
	}
	
	public function AddParam(name:String, value:String):Void {
		this.postObject[name] = value;
	}
	
	public function RemoveParam(name:String):Void {
		delete this.postObject[name];
	}
	
	public function GetPostObject(escape:Boolean):Object {
		if (escape) {
			var escapedPostObject:Object = { };
			for (var k:String in this.postObject) {
				if (this.postObject.hasOwnProperty(k)) {
					var escapedName:String = FileItem.EscapeParamName(k);
					escapedPostObject[escapedName] = this.postObject[k];
				}
			}
			return escapedPostObject;
		} else {
			return this.postObject;
		}
	}
	
	// Update the js_object and return it.
	public function ToJavaScriptObject():Object {
		this.js_object.filestatus = this.file_status;
		this.js_object.post = this.GetPostObject(true);
		
		return this.js_object;
	}
	
	public function toString():String {
		return "FileItem - ID: " + this.id;
	}

	/*
	// The purpose of this function is to escape the property names so when Flash
	// passes them back to javascript they can be interpretted correctly.
	// ***They have to be unescaped again by JavaScript.**
	//
	// This works around a bug where Flash sends objects this way:
	//		object.parametername = "value";
	// instead of
	//		object["parametername"] = "value";
	// This can be a problem if the parameter name has characters that are not
	// allowed in JavaScript identifiers:
	// 		object.parameter.name! = "value";
	// does not work but,
	//		object["parameter.name!"] = "value";
	// would have worked.
	*/
	public static function EscapeParamName(name:String):String {
		var valid_chars:String = "0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ_";
		var numerics:String = "0123456789";

		for (var i:Number = name.length - 1; i >= 0; i--) {
			var character:String = name.substr(i, 1);
			if (valid_chars.indexOf(character) < 0) {
				name = name.substr(0, i) + FileItem.EscapeCharacter(character) + (i < name.length ? name.substr(i + 1) : "");
			}
		}
		
		if (numerics.indexOf(name.substr(0, 1)) > -1) {
			name = FileItem.EscapeCharacter(name.substr(0, 1)) + name.substr(1);
		}
		
		return name;
	}
	public static function EscapeCharacter(character:String):String {
		return "$" + ("0000" + character.charCodeAt(0).toString(16)).substr(-4);
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -