225 lines
7.4 KiB
JavaScript
225 lines
7.4 KiB
JavaScript
/* This is an example of how to cancel all the files queued up. It's made somewhat generic. Just pass your SWFUpload
|
|
object in to this method and it loops through cancelling the uploads. */
|
|
function cancelQueue(instance) {
|
|
document.getElementById(instance.customSettings.cancelButtonId).disabled = true;
|
|
instance.stopUpload();
|
|
var stats;
|
|
|
|
do {
|
|
stats = instance.getStats();
|
|
instance.cancelUpload();
|
|
} while (stats.files_queued !== 0);
|
|
|
|
}
|
|
|
|
/* **********************
|
|
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 fileDialogStart() {
|
|
/* I don't need to do anything here */
|
|
}
|
|
function fileQueued(file) {
|
|
try {
|
|
// You might include code here that prevents the form from being submitted while the upload is in
|
|
// progress. Then you'll want to put code in the Queue Complete handler to "unblock" the form
|
|
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
|
progress.setStatus("Pending...");
|
|
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 ? "已达到能上传的文件上限." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
|
|
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: " + message);
|
|
break;
|
|
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
|
|
progress.setStatus("不能上传大小为0的文件");
|
|
this.debug("文件: " + file.name + ", 大小: " + file.size + ", Message: " + message);
|
|
break;
|
|
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
|
|
progress.setStatus("错误的文件格式");
|
|
this.debug("文件: " + file.name + ", 大小: " + file.size + ", Message: " + message);
|
|
break;
|
|
case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
|
|
alert("您选择了过多的文件. " + (message > 1 ? "您只能添加 " + message + " 个文件" : "不能再添加更多文件"));
|
|
break;
|
|
default:
|
|
if (file !== null) {
|
|
progress.setStatus("发生未知错误,请联系管理员");
|
|
}
|
|
this.debug("错误: " + errorCode + ", 文件: " + file.name + ", 大小: " + file.size + ", Message: " + message);
|
|
break;
|
|
}
|
|
} catch (ex) {
|
|
this.debug(ex);
|
|
}
|
|
}
|
|
|
|
function fileDialogComplete(numFilesSelected, numFilesQueued) {
|
|
try {
|
|
if (this.getStats().files_queued > 0) {
|
|
document.getElementById(this.customSettings.cancelButtonId).disabled = false;
|
|
}
|
|
|
|
/* I want auto start 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 */
|
|
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("Uploading...");
|
|
|
|
//$('#fsUploadProgress2').css({'width': percent + '%'});
|
|
} catch (ex) {
|
|
this.debug(ex);
|
|
}
|
|
}
|
|
|
|
function uploadSuccess(file, serverData) {
|
|
try {
|
|
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
|
progress.setComplete();
|
|
progress.setStatus("Complete.");
|
|
progress.toggleCancel(false);
|
|
if(typeof(serverData) == 'string')
|
|
{
|
|
data = $.parseJSON(serverData);
|
|
}
|
|
|
|
if(typeof(data.error) != 'undefined' && data.error != 0)
|
|
{
|
|
alert(data.error);
|
|
return;
|
|
}
|
|
|
|
if(thumbfunc.filetype(data.file_type) == "image")
|
|
{
|
|
$('#thumbs').append(thumbfunc.makeHtml(data));
|
|
thumbfunc.binddelbtn(data.attid);
|
|
}
|
|
if(thumbfunc.filetype(data.file_type) == "audio")
|
|
{
|
|
$('#voice').append(mp3player.makeHtml(data));
|
|
mp3player.loaded();
|
|
}
|
|
|
|
} catch (ex) {
|
|
this.debug(ex);
|
|
}
|
|
}
|
|
|
|
function uploadComplete(file) {
|
|
try {
|
|
/* I want the next upload to continue automatically so I'll call startUpload here */
|
|
if (this.getStats().files_queued === 0) {
|
|
document.getElementById(this.customSettings.cancelButtonId).disabled = true;
|
|
} else {
|
|
this.startUpload();
|
|
}
|
|
} 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("Upload Error: " + message);
|
|
this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
|
|
break;
|
|
case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
|
|
progress.setStatus("Configuration Error");
|
|
this.debug("Error Code: No backend file, 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.SPECIFIED_FILE_ID_NOT_FOUND:
|
|
progress.setStatus("File not found.");
|
|
this.debug("Error Code: The file was not found, 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 (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: " + error_code);
|
|
this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
|
break;
|
|
}
|
|
} catch (ex) {
|
|
this.debug(ex);
|
|
}
|
|
} |