?? handlers.js
字號(hào):
?
var _Upload = {
Opened : false,
TipInfo : null,
Debug : false,
Length : 0,
Files : {},
// 重復(fù)的文件列表
RepeatFiles : {},
// 錯(cuò)誤相關(guān)
FirstError : null,
ErrorCount : 0,
// 文件個(gè)數(shù)
Count : 0,
// 文件大小
Sizes : 0,
// 類(lèi)型
Type : '',
//Role : '',
DirectoryID : '',
Path : '',
QueryString : '',
DiskSettingOpenDisk : true,
FileSizeLimit : '',
FilesLimit : [],
DocumentTitle : '',
// 檢查是否名稱(chēng)重復(fù)地址
CheckFileNameUrl : '',//'http://192.168.0.20/work/ActionScript/swfupload/test/check-url.pl',
// 重命名請(qǐng)求地址
RenameUrl : '',//'http://192.168.0.20/work/ActionScript/swfupload/test/rename-url.pl',
// 上傳地址
UploadUrl : '',//'http://192.168.0.20/work/ActionScript/swfupload/test/upload.php',
// after select one
// return
// -1 : 文件重復(fù)
// 0 : 超過(guò)允許的大小
// 1 : 正常
SelectedOne : function () {return 1},
// after select all
SelectedAll : function () {return true},
// 選擇上傳文件對(duì)話(huà)框關(guān)閉
DialogClosed : function () {},
// after render
Render : function () {},
// after upload one
UploadedOne : function () {return null},
// after upload all
UploadedAll : function () {},
// close uploader
CloseUploader : function () {},
ShowDebug : function (content) {
if (this.Debug) alert(content);
}
};
/* **********************
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) {
if (!_Upload.SwfUpload) _Upload.SwfUpload = this;
var ok = _Upload.SelectedOne(file.name);
if (ok != 1) {
if (ok == -1)
_Upload.RepeatFiles[file.id] = file.name;
this.cancelUpload(file.id);
return;
}
// info
_Upload.Files[file.id] = {
id: file.id,
// file name String
filename: file.name,
filesize: file.size,
iscover: false,
isrename: false
};
_Upload.Count++;
}
function fileQueueError(file, errorCode, message) {
var self = this;
//try {
if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
return;
}
switch (errorCode) {
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
//progress.setStatus("File is too big.");
_Upload.FilesLimit[_Upload.FilesLimit.length] = file.name;
delete _Upload.Files[file.id];
if (_Upload.Count == 0) displayLimitedFiles();
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:
// 空文件另處理
var uploadURL = _Upload.UploadUrl + '?type=' + _Upload.Type + '&filename=' + encodeURIComponent(file.name) + _Upload.DirectoryID + _Upload.Path + _Upload.QueryString + '&isemptyfile=true';
var ajax = new oAjax();
ajax.url = uploadURL;
ajax.callback = function (content) {};
ajax.send();
//Widget.Alert('提示', file.name + '文件大小不能為空。');
//progress.setStatus("Cannot upload Zero Byte files.");
this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
break;
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
Widget.Alert('提示', file.name + '文件類(lèi)型無(wú)效。');
//progress.setStatus("Invalid File Type.");
this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
break;
default:
if (file !== null) {
//progress.setStatus("Unhandled Error");
}
this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
break;
}
//} catch (ex) {
// this.debug(ex);
//}
}
// 關(guān)閉選擇框
function fileDialogComplete(numFilesSelected, numFilesQueued) {
if (document.title == '#')
document.title = _Upload.DocumentTitle;
if (_Upload.Count == 0) _Upload.FilesLimit = [];
_Upload.DialogClosed();
if (numFilesSelected == 0) {
clearUpload();
return;
}
formatDirectoryID(_Upload);
var queryString = '';
for (var item in _Upload.Files) {
if (queryString != '') queryString += '|';
queryString += item + ':' + _Upload.Files[item].filename;
}
if (queryString == '') return;
// 判斷文件是否重名,并提示用戶(hù)覆蓋或重命名
var ajax = new oAjax();
ajax.action = 'post';
ajax.error = 0;
ajax.url = _Upload.CheckFileNameUrl + '?rnd=' + Math.random() + '&type=' + _Upload.Type + _Upload.DirectoryID + _Upload.Path + _Upload.QueryString;
ajax.content = 'list=' + encodeURIComponent(queryString);
ajax.callback = function (content) {
// 提示用戶(hù)是否覆蓋或重命名或取消,
// 收集需重命名的文件,傳回服務(wù)器獲取新文件名
// 取消的文件則不上傳
_Upload.ShowDebug('返回需要重命名的文件id:' + content);
showAlert(content);
};
_Upload.ShowDebug('發(fā)送所有文件id/name:' + queryString);
ajax.send();
}
/**********************************************/
// [判斷文件是否重名]的返回
// content: [swfid, fileid, filesize, icon]
function showAlert (content) {
// 出錯(cuò)處理
if (content.indexOf('error:') == 0) {
Widget.Alert('提示', formatErrorInfo(content));
clearUpload();
return;
}
if (content == '') {
if (getFileCountAndSizes()) return;
startUpload();
return;
}
var ids = content.split('|');
var current = 0;
function _showAlert (current) {
var repeatItem = ids[current].split('*');
var file = _Upload.Files[repeatItem[0]];
var enabledDelete = true;
var filename = file.filename;
var index = filename.lastIndexOf('.');
filename = [filename.substring(0, index), filename.substr(index + 1)];
var fileid = repeatItem[1];
var filesize = repeatItem[2];
var icon = repeatItem[3];
if(_Upload.DiskSettingOpenDisk) {
Widget.Alert(
'文件已存在',
[
_Upload.Type == 'post'
? '您網(wǎng)絡(luò)硬盤(pán)的“我的附件”目錄已經(jīng)存在文件:“' + file.filename + '”。請(qǐng)選擇操作:<br />'
: file.filename + '在網(wǎng)絡(luò)硬盤(pán)中已經(jīng)存在<br />請(qǐng)選擇操作<br />',
_Upload.Type == 'post' ? '[<a href="javascript:;" id="insert_' + file.id + '">使用網(wǎng)絡(luò)硬盤(pán)中的同名文件插入為附件,不再上傳</a>]<br />' : '',
'[<a href="javascript:;" id="rename_', file.id, '">上傳并自動(dòng)重命名</a>]<br />',
'[<a href="javascript:;" id="cover_', file.id, '">上傳并覆蓋原文件</a>]<br />',
'[<a href="javascript:;" id="cancel_', file.id, '">取消該文件的上傳</a>]'].join(''),
function () {
if (enabledDelete) {
delete file;
delete _Upload.Files[repeatItem[0]];
}
_next();
}
);
}
else{
Widget.Alert(
'溫馨提示',
['您以前曾上傳過(guò)同名的文件 “', file.filename, '”。請(qǐng)選擇操作:<br />',
'[<a href="javascript:;" id="insert_' + file.id + '">使用以前上傳的同名文件插入為附件,不再上傳</a>]<br />',
'[<a href="javascript:;" id="rename_', file.id, '">請(qǐng)繼續(xù)上傳</a>]<br />',
'[<a href="javascript:;" id="cancel_', file.id, '">取消該附件的插入</a>]'].join(''),
function () {
if (enabledDelete) {
delete file;
delete _Upload.Files[repeatItem[0]];
}
_next();
}
);
}
_Upload.DiskSettingOpenDisk &&
($('cover_' + file.id).onclick = function () {
enabledDelete = false;
file.iscover = true;
Widget.InfoClose();
return false;
});
$('rename_' + file.id).onclick = function () {
enabledDelete = false;
file.isrename = true;
Widget.InfoClose();
return false;
};
if (_Upload.Type == 'post') {
$('insert_' + file.id).onclick = function () {
InsertOne(p, fileid, filename, filesize, '\\我的附件', icon);
Widget.InfoClose();
return false;
};
}
$('cancel_' + file.id).onclick = function () {
Widget.InfoClose();
return false;
};
$('popup_info_close').style.display = 'none';
$('popup_info_confirm').style.display = 'none';
}
function _next () {
if (++current == ids.length) {
renameRequest();
return;
}
_showAlert(current);
}
_showAlert(current);
}
// 提交需要重命名的文件id及名稱(chēng)
function renameRequest () {
if (getFileCountAndSizes()) return;
// 提交需要重命名的文件名列表
var ids = '';
for (var item in _Upload.Files) {
item = _Upload.Files[item];
if (ids) ids += '|';
if (item.isrename) ids += '*';
ids += item.id + ':' + item.filename;
}
// 無(wú)文件可上傳
if (_Upload.Count == 0) return;
// 返回需要重命名的文件id及文件名
var ajax = new oAjax();
ajax.action = 'post';
ajax.error = 0;
ajax.url = _Upload.RenameUrl + '?rnd=' + Math.random() + '&type=' + _Upload.Type + _Upload.DirectoryID + _Upload.Path + _Upload.QueryString + '&action=rename';
ajax.content = 'list=' + encodeURIComponent(ids);
ajax.callback = function (content) {
if (ids) _Upload.ShowDebug('獲取新文件名:' + content);
toRename(content);
};
ajax.send();
_Upload.ShowDebug('renameRequest: ' + ajax.url);
}
// 返回重命名的文件
function toRename (content) {
// 出錯(cuò)處理
if (content.indexOf('error:') == 0) {
Widget.Alert('提示', formatErrorInfo(content));
clearUpload();
return;
}
// 處理重命名的文件
else if (content != '') {
var ids = content.split('|');
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -