handlers.js

来自「asp的bbs程序」· JavaScript 代码 · 共 655 行 · 第 1/2 页

JS
655
字号
		for (var item in ids) {
			item = ids[item].split(':');
			_Upload.Files[item[0]].filename = item[1];
		}
	}

	startUpload();
}

// 获取文件个数及文件大小总和
function  getFileCountAndSizes () {
	var item;
	// 判断确认要上传的文件是否超过大小
	var sizes = count = 0;
	for (item in _Upload.Files) {
		count++;
		if (_Upload.Files[item].iscover)
			continue;
		sizes += _Upload.Files[item].filesize;
	}
	_Upload.Count = count;
	_Upload.Sizes = sizes;
	if (!_Upload.SelectedAll()) {
		$('add_upload') && ($('add_upload').clickEnabled = true);
		clearUpload();
		return true;
	}
	return false;
}

// 显示浮动层并开始上传
function startUpload () {
	showUploadLayer();
	_Upload.SwfUpload.startUpload();
}

// 显示浮动层
function showUploadLayer () {
	// 是否开启文件上传进度层
	if (!_Upload.Opened) {
	    _Upload.Opened = true;
	    Widget.Content('上传文件进度', $('file_upload'), 500, function () {
			_Upload.CloseUploader();
			displayLimitedFiles();
			clearUpload();
	    });
		$('clear_upload').style.display = 'none';
		$('but_upload').style.display = 'none';
		$('add_upload').onclick = function () {
			if (!this.clickEnabled) return;
			_Upload.SwfUpload.selectFiles();
			this.clickEnabled = false;
		};
		$('add_upload').clickEnabled = false;
		$('add_upload').parentNode.style.display = 'none';
		/*
		$('clear_upload').onclick = function () {
			_Upload.SwfUpload.selectFiles();
		};
		*/
	}
	
	/// 添加到上传列表
	// 清理无上传文件项的提示信息
	var tipInfo = $('empty');
	if (tipInfo) {
	    _Upload.TipInfo = tipInfo;
	    oNode.RemoveNode(tipInfo, $('item_container'));
	}
	
	for (var item in _Upload.Files) {
	    var id = _Upload.Files[item].id;
		var iscover = !!_Upload.Files[item].iscover;
		var isrename = !!_Upload.Files[item].isrename;
	    var filename = _Upload.Files[item].filename;
	    var filesize = _Upload.Files[item].filesize;
	    // 呈现该上传条目
	    var file_item = oNode.CreateNode('ul');
	    oNode.AddNode(file_item, $('item_container'));
	    file_item.tabIndex = ++_Upload.Length;
	    file_item.innerHTML = $('file_upload_item').innerHTML.replace(/\$/g, id);
		
	    // info
	    _Upload.Files[id] = {
			id: id,
			// file name String
			filename: filename,
			// file size Number
			filesize: filesize,
			// `ul` container HTMLElement
			file_item: file_item,
			// process bar
			processing: $('processing_' + id),
			// file icon HTMLElement
			file_icon: $('fileicon_' + id),
			// file name HTMLElement
			file_name: $('filename_' + id),
			// file size HTMLElement
			file_size: $('filesize_' + id),
			// file status HTMLElement
			file_status: $('filestatus_' + id),
			// 0: 未处理, 1: 等待验证, 2: 可上传或正在上传, 3: 上传完毕
			//stoped_status : 0,
			iscover: iscover,
			isrename: isrename,
			error: false,
			deleted: false,
			finished: false
	    };
	    _Upload.Files[id]['file_name'].innerHTML
		    = _Upload.Files[id]['file_name'].title
		    = filename;
		
	    // 状态
	    _Upload.Files[id]['file_size'].innerHTML = '准备上传';
	}
    // render
	_Upload.Render();
}

// 格式化错误信息
function formatErrorInfo (err) {
	var prefix = 'error:';
	err = err.substr(prefix.length);
	return err;
}

// 清理当前上传任务相关参数
function clearUpload () {
	_Upload.Length = 0;
	_Upload.Opened = false;
	_Upload.ErrorCount = 0;
	_Upload.FirstError = null;
	_Upload.Count = 0;
	_Upload.Sizes = 0;
	for (var item in _Upload.Files) {
		_Upload.SwfUpload.cancelUpload(item);
	}
	_Upload.Files = {};
	_Upload.FilesLimit = [];
}

// 显示被限制的文件
function displayLimitedFiles () {
	if (_Upload.FilesLimit.length == 0) return;
	// 提示所有超过限制大小的文件
	var str = '';
	for (var i = 0, len = _Upload.FilesLimit.length; i < len; i++) {
		if (str != '') str += '<br />';
		str += "“" + _Upload.FilesLimit[i] + "“";
	}
	
	var filesize = _Upload.FileSizeLimit.split(/\s+/);
	if (filesize[1].toLowerCase() == 'mb' && filesize[0] >= 1024) {
		filesize[0] = Math.floor(filesize[0] / 1024) + Math.floor((filesize[0] % 1024) / 1024 * 10) / 10;
		filesize[1] = 'G';
	}
	else {
		filesize[0] = Math.floor(parseFloat(filesize[0]) * 10) / 10;
	}
	
	Widget.Alert('温馨提示', '您选择上传的文件中:<br />' + str + '<br />超过' + filesize[0] + filesize[1] + '的大小限制,不允许上传。');
}
/**********************************************/
// 上传指定文件
function uploadStart(file) {
	try {
		var item = _Upload.Files[file.id];
		var uploadURL = _Upload.UploadUrl + '?type=' + _Upload.Type + '&filename=' + encodeURIComponent(item.filename) + _Upload.DirectoryID + _Upload.Path + (item.iscover ? '&iscover=true' : '') + (item.isrename ? '&isrename=true' : '') + _Upload.QueryString;
		this.setUploadURL(uploadURL);
		item.file_item.focus();
		
		_Upload.ShowDebug('upload: ' + _Upload.UploadUrl + '?type=' + _Upload.Type + '&filename=' + encodeURIComponent(item.filename) + _Upload.DirectoryID + _Upload.Path + (item.iscover ? '&iscover=true' : '') + (item.isrename ? '&isrename=true' : '') + _Upload.QueryString);
	}
	catch (ex) {
		//alert('uploadStart: ' + ex);
	}
	
	return true;
}

// 上传进度
function uploadProgress(file, bytesLoaded, bytesTotal) {
	try {
		/// 上传进程
		var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
		var item = _Upload.Files[file.id];
	    if (item.error) return;
		// 进度
		item.processing.style.width = (percent > 0 ? percent : 0) + '%';
		// 文件大小
		item.file_size.innerHTML = '<span style="float:left;width:40px;text-align:right;">' + formatFileSize(bytesLoaded) + '</span> / ' + formatFileSize(bytesTotal);
		// 文件上传状态
		item.file_status.innerHTML = '正在上传...';
	} catch (ex) {
		this.debug(ex);
	}
}

/**********************************************/
// 格式化文件大小
function formatFileSize (filesize) {
	if (Math.floor(filesize / Math.pow(1024, 3)) > 0) return Math.floor(filesize / Math.pow(1024, 3) * 10) / 10 + 'G';
	if (Math.floor(filesize / Math.pow(1024, 2)) > 0) return Math.floor(filesize / Math.pow(1024, 2) * 10) / 10 + 'M';
	if (Math.floor(filesize / 1024) > 0) return Math.floor(filesize / 1024 * 10) / 10 + 'K';
	return filesize + 'B';
}
/**********************************************/

// 一个文件上传成功
function uploadSuccess(file, content) {
	try {
		var item = _Upload.Files[file.id];
		var c = content;
		content = content.split('|');
		switch (content[0]) {
			// 错误
			case '-1':
		        _Upload.SwfUpload.cancelUpload(file.id);
				item.error = true;
				_Upload.ErrorCount++;
				if (!_Upload.FirstError)
					_Upload.FirstError = item;
				item.file_icon.style.backgroundPosition = '-144px 0';
				item.file_size.innerHTML = content[4];
				item.file_status.innerHTML = '错误';
				break;
			// 冲突
			case '0':
		        _Upload.SwfUpload.cancelUpload(file.id);
				item.error = true;
				_Upload.ErrorCount++;
				if (!_Upload.FirstError)
					_Upload.FirstError = item;
				item.file_icon.style.backgroundPosition = '-144px 0';
				item.file_size.innerHTML = content[4];
				item.file_status.innerHTML = '错误';
				break;
			// 没冲突
			//case '1':
			default:
				//item.stoped_status = 3;
				item.file_status.innerHTML = '完毕';
				// 上传完,返回文件信息
				item.finished = true;
                item.file_icon.style.backgroundPosition = '-48px 0';
				_Upload.UploadedOne(item.filename, content, item);
		}
		
		// file info
		_Upload.ShowDebug('文件' + item.filename + '上传完毕:' + serverData + ' ' + file.size);
	} catch (ex) {
		this.debug(ex);
	}
}

// 上传错误
function uploadError(file, errorCode, message) {
	try {
		this.cancelUpload(file.id);
		switch (errorCode) {
			case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
				//progress.setStatus("Upload Error: " + message);
				this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
				//progress.setStatus("Upload Failed.");
				this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.IO_ERROR:
				//progress.setStatus("Server (IO) Error");
				this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
				//progress.setStatus("Security Error");
				this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
				//progress.setStatus("Upload limit exceeded.");
				this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
				//progress.setStatus("Failed Validation.  Upload skipped.");
				this.debug("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
				// If there aren't any files left (they were all cancelled) disable the cancel button
				//if (this.getStats().files_queued === 0) {
				//	document.getElementById(this.customSettings.cancelButtonId).disabled = true;
				//}
				//progress.setStatus("Cancelled");
				//progress.setCancelled();
				break;
			case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
				//progress.setStatus("Stopped");
				break;
			default:
				//progress.setStatus("Unhandled Error: " + errorCode);
				this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				break;
		}
	} catch (ex) {
		this.debug(ex);
	}
}

// all files complete
function uploadComplete(file) {
	if (this.getStats().files_queued === 0 && _Upload.ErrorCount == 0) {
		_Upload.UploadedAll();
	}
	if (_Upload.FirstError) {
		$('upload_error').innerHTML = '当前有 <span class="error-count">' + _Upload.ErrorCount + '</span> 个文件上传失败。';
	}
	if (this.getStats().files_queued === 0 && _Upload.FirstError) {
		$('upload_error').innerHTML = '总共有 <span class="error-count">' + _Upload.ErrorCount + '</span> 个文件上传失败。';
		_Upload.FirstError.file_item.focus();
	}
}

// This event comes from the Queue Plugin
function queueComplete(numFilesUploaded) {
	return;
	var status = document.getElementById("divStatus");
	status.innerHTML = numFilesUploaded + " file" + (numFilesUploaded === 1 ? "" : "s") + " uploaded.";
}

⌨️ 快捷键说明

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