123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- /*
- [Leo.C, Studio] (C)2004 - 2008
-
- $Hanization: LeoChung $
- $E-Mail: who@imll.net $
- $HomePage: http://imll.net $
- $Date: 2008/11/8 18:02 $
- */
- /* Demo Note: This demo uses a FileProgress class that handles the UI for displaying the file name and percent complete.
- The FileProgress class is not part of SWFUpload.
- */
- /* **********************
- Event Handlers
- These are my custom event handlers to make my
- web application behave the way I went when SWFUpload
- completes different tasks. These aren't part of the SWFUpload
- package. They are part of my application. Without these none
- of the actions SWFUpload makes will show up in my application.
- ********************** */
- function fileQueued(file) {
- try {
- var progress = new FileProgress(file, this.customSettings.progressTarget);
- progress.setStatus("正在等待...");
- progress.toggleCancel(true, this);
- } catch (ex) {
- this.debug(ex);
- }
- }
- function fileQueueError(file, errorCode, message) {
- try {
- if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
- alert("您正在上传的文件队列过多.\n" + (message === 0 ? "您已达到上传限制" : "您最多能选择 " + (message > 1 ? "上传 " + message + " 文件." : "一个文件.")));
- return;
- }
- var progress = new FileProgress(file, this.customSettings.progressTarget);
- progress.setError();
- progress.toggleCancel(false);
- switch (errorCode) {
- case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
- progress.setStatus("文件尺寸过大.");
- this.debug("错误代码: 文件尺寸过大, 文件名: " + file.name + ", 文件尺寸: " + file.size + ", 信息: " + message);
- break;
- case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
- progress.setStatus("无法上传零字节文件.");
- this.debug("错误代码: 零字节文件, 文件名: " + file.name + ", 文件尺寸: " + file.size + ", 信息: " + message);
- break;
- case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
- progress.setStatus("不支持的文件类型.");
- this.debug("错误代码: 不支持的文件类型, 文件名: " + file.name + ", 文件尺寸: " + file.size + ", 信息: " + message);
- break;
- default:
- if (file !== null) {
- progress.setStatus("未处理的错误");
- }
- this.debug("错误代码: " + errorCode + ", 文件名: " + file.name + ", 文件尺寸: " + file.size + ", 信息: " + message);
- break;
- }
- } catch (ex) {
- this.debug(ex);
- }
- }
- function fileDialogComplete(numFilesSelected, numFilesQueued) {
- try {
- if (numFilesSelected > 0) {
- document.getElementById(this.customSettings.cancelButtonId).disabled = false;
- }
-
- /* I want auto start the upload and I can do that here */
- this.startUpload();
- } catch (ex) {
- this.debug(ex);
- }
- }
- function uploadStart(file) {
- try {
- /* I don't want to do any file validation or anything, I'll just update the UI and
- return true to indicate that the upload should start.
- It's important to update the UI here because in Linux no uploadProgress events are called. The best
- we can do is say we are uploading.
- */
- var progress = new FileProgress(file, this.customSettings.progressTarget);
- progress.setStatus("正在上传...");
- progress.toggleCancel(true, this);
- }
- catch (ex) {}
-
- return true;
- }
- function uploadProgress(file, bytesLoaded, bytesTotal) {
- try {
- var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
- var progress = new FileProgress(file, this.customSettings.progressTarget);
- //progress.setProgress(percent);
- //progress.setStatus("正在上传...");
- } catch (ex) {
- this.debug(ex);
- }
- }
- function uploadSuccess(file, serverData) {
-
- try {
- var progress = new FileProgress(file, this.customSettings.progressTarget);
- progress.setComplete();
- progress.setStatus("上传成功");
- progress.toggleCancel(false);
- } catch (ex) {
- this.debug(ex);
- }
- }
- function uploadError(file, errorCode, message) {
- try {
- var progress = new FileProgress(file, this.customSettings.progressTarget);
- progress.setError();
- progress.toggleCancel(false);
- switch (errorCode) {
- case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
- progress.setStatus("上传错误: " + message);
- this.debug("错误代码: HTTP错误, 文件名: " + file.name + ", 信息: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
- progress.setStatus("上传失败");
- this.debug("错误代码: 上传失败, 文件名: " + file.name + ", 文件尺寸: " + file.size + ", 信息: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.IO_ERROR:
- progress.setStatus("服务器 (IO) 错误");
- this.debug("错误代码: IO 错误, 文件名: " + file.name + ", 信息: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
- progress.setStatus("安全错误");
- this.debug("错误代码: 安全错误, 文件名: " + file.name + ", 信息: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
- progress.setStatus("超出上传限制.");
- this.debug("错误代码: 超出上传限制, 文件名: " + file.name + ", 文件尺寸: " + file.size + ", 信息: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
- progress.setStatus("无法验证. 跳过上传.");
- this.debug("错误代码: 文件验证失败, 文件名: " + file.name + ", 文件尺寸: " + file.size + ", 信息: " + 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("取消");
- progress.setCancelled();
- break;
- case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
- progress.setStatus("停止");
- break;
- default:
- progress.setStatus("未处理的错误: " + errorCode);
- this.debug("错误代码: " + errorCode + ", 文件名: " + file.name + ", 文件尺寸: " + file.size + ", 信息: " + message);
- break;
- }
- } catch (ex) {
- this.debug(ex);
- }
- }
- function uploadComplete(file) {
- if (this.getStats().files_queued === 0) {
-
- var progress = new FileProgress(file, this.customSettings.progressTarget);
- progress.setComplete();
- progress.setStatus("上传成功");
- progress.toggleCancel(false);
-
- document.getElementById(this.customSettings.cancelButtonId).disabled = true;
- }
- }
- // This event comes from the Queue Plugin
- function queueComplete(numFilesUploaded) {
- var status = document.getElementById("divStatus");
- status.innerHTML = numFilesUploaded + " 个文件" + (numFilesUploaded === 1 ? "" : "s") + "已上传.";
- }
|