201 lines
6.6 KiB
JavaScript
201 lines
6.6 KiB
JavaScript
|
/* 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("<22> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ...");
|
|||
|
progress.toggleCancel(true, this);
|
|||
|
|
|||
|
} catch (ex) {
|
|||
|
this.debug(ex);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
function fileQueueError(file, errorCode, message) {
|
|||
|
try {
|
|||
|
if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
|
|||
|
alert("<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\n" + (message === 0 ? "<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>." : "<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> " + (message > 1 ? "<22><> <20><><EFBFBD><EFBFBD><EFBFBD> " + message + " <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>." : "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.")));
|
|||
|
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("<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
|||
|
this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
|||
|
break;
|
|||
|
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
|
|||
|
progress.setStatus("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
|||
|
this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
|||
|
break;
|
|||
|
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
|
|||
|
progress.setStatus("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.");
|
|||
|
this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
|||
|
break;
|
|||
|
default:
|
|||
|
if (file !== null) {
|
|||
|
progress.setStatus("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + 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 */
|
|||
|
|
|||
|
elements = document.getElementById("form").elements;
|
|||
|
for(i=0; i < elements.length; i++) {
|
|||
|
name = elements[i].name
|
|||
|
if (name) {
|
|||
|
value = '';
|
|||
|
switch(elements[i].type) {
|
|||
|
case "select" :
|
|||
|
value = elements[i].options[elements[i].selectedIndex].value
|
|||
|
break;
|
|||
|
case "radio":
|
|||
|
case "checkbox":
|
|||
|
value = elements[i].checked ? 1: 0;
|
|||
|
break;
|
|||
|
default:
|
|||
|
value = elements[i].value;
|
|||
|
break;
|
|||
|
}
|
|||
|
this.addPostParam(name, value);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
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("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...");
|
|||
|
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("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...");
|
|||
|
} catch (ex) {
|
|||
|
this.debug(ex);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function uploadSuccess(file, serverData) {
|
|||
|
try {
|
|||
|
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
|||
|
progress.setComplete();
|
|||
|
progress.setStatus("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
|||
|
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("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: " + message);
|
|||
|
this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
|
|||
|
break;
|
|||
|
case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
|
|||
|
progress.setStatus("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
|||
|
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("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
|
|||
|
break;
|
|||
|
case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
|
|||
|
progress.setStatus("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
|||
|
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("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
|||
|
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("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
progress.setCancelled();
|
|||
|
break;
|
|||
|
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
|
|||
|
progress.setStatus("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
break;
|
|||
|
default:
|
|||
|
progress.setStatus("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: " + errorCode);
|
|||
|
this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
|||
|
break;
|
|||
|
}
|
|||
|
} catch (ex) {
|
|||
|
this.debug(ex);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function uploadComplete(file) {
|
|||
|
if (this.getStats().files_queued === 0) {
|
|||
|
document.getElementById(this.customSettings.cancelButtonId).disabled = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// This event comes from the Queue Plugin
|
|||
|
function queueComplete(numFilesUploaded) {
|
|||
|
setTimeout('location.replace( window.location )', 2000);
|
|||
|
}
|