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(" î÷åðåäè ...");
|
|
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("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("Íåâîçìîæíî çàãðóçèòü ôàéë íóëåâîãî ðàçìåðà.");
|
|
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("Íåâåðíûé òèï ôàéëà.");
|
|
this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
|
break;
|
|
default:
|
|
if (file !== null) {
|
|
progress.setStatus("Íåèçâåñòíàÿ îøèáêà");
|
|
}
|
|
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("Çàãðóçêà...");
|
|
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("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
|
|
break;
|
|
case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
|
|
progress.setStatus("Îøèáêà çàãðóçêè.");
|
|
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("Îøèáêà áåçîïàñíîñòè");
|
|
this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
|
|
break;
|
|
case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
|
|
progress.setStatus("Ïðåâûøåí ëèìèò çàãðóçêè.");
|
|
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("Îøèáêà èäåíòèôèêàöèè. Çàãðóçêà ïðîïóùåíà.");
|
|
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("Îòìåíåíî");
|
|
progress.setCancelled();
|
|
break;
|
|
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
|
|
progress.setStatus("Îñòàíîâëåíî");
|
|
break;
|
|
default:
|
|
progress.setStatus("Íåèçâåñòíàÿ îøèáêà: " + 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);
|
|
}
|