?? upload.js
字號:
?// upload file
Upload.Form = null;
Upload.Frame = null;
Upload.Ajax = null;
// 指定上傳的頁面
Upload.Type = '';
// 暫存當前所有上傳文件索引
Upload.Indexs = [];
Upload.Files = {};
// 未上傳文件個數
Upload.Count = 0;
// 當前所有上傳的文件大小
Upload.Sizes = 0;
// 當前加載過程出現上傳錯誤數
Upload.ErrNum = 0;
// 指定當前上傳的文件路徑或ID
//Upload.Role = '';
Upload.Path = '';
Upload.DirectoryID = '';
// 字符串
Upload.QueryString = '';
Upload.DiskSettingOpenDisk = true;
// 上傳路徑
Upload.UploadUrl = 'MaxUpload.aspx';
// 文件信息
Upload.AjaxUrl = 'MaxUploadInfo.aspx';
// 獲取文件id
Upload.GetIdUrl = 'MaxUploadID.aspx';
// 選擇上傳文件控件
Upload.oFileUpload = null;
// 表示上傳層是否為隱藏狀態
Upload.IsHide = false;
// 是否正在上傳
Upload.Uploading = false;
// 當前上傳的索引
Upload.CurIndex = 0;
// 計時器
Upload.Interval = 0;
// 上傳框是否開啟
Upload.Closed = true;
// 無上傳文件項的提示信息
Upload.TipInfo = null;
function Upload () {
var form = Upload.Form;
if (!Upload.Frame || !form) {
var frameName = 'upload_frame_' + Global.Random();
var frame = Upload.Frame = oNode.CreateIframe(frameName);
frame.src = 'about:blank';
frame.style.visibility = 'hidden';
frame.style.position = 'absolute';
frame.style.left = '0';
frame.style.top = '0';
frame.id = frameName;
oNode.AddNode(frame);
var name = 'form_' + Global.Random();
form = Upload.Form = oNode.CreateForm(name, 'post', 'multipart/form-data');
form.target = frameName;
oNode.AddNode(form);
}
else {
Upload.Indexs = [];
Upload.Files = {};
Upload.CurIndex = 0;
}
while (form.firstChild) {
form.removeChild(form.firstChild);
}
Upload.SetUploadAble(false);
// 清除所有上傳文件
Events.AttachEvent($('clear_upload'), 'click', function () {
Upload.RemoveAll(false);
});
//Upload.Role = role;
Upload.Count = 0;
Upload.ErrNum = 0;
Upload.UploadFile();
}
Upload.UploadFile = function (container) {
// 上傳文件選擇按鈕
var ofu = this.oFileUpload = new oFileUpload();
ofu.container = container || $('add_upload');
ofu.Create();
var name = '';
var filename, index;
function getName (e, th) {
ofu.Closed = true;
filename = ofu.fileUpload.value;
if (filename.indexOf('\\') > -1) {
index = filename.indexOf('\\') > 0 ? filename.lastIndexOf('\\') + 1 : 0;
}
else {
index = filename.indexOf('/') > 0 ? filename.lastIndexOf('/') + 1 : 0;
}
filename = filename.substr(index);
// 其他判斷是否,比如已上傳文件數
var ok = Upload.SelectedOne(filename);
if (ok != 1) {
Upload.oFileUpload.Reset();
//Widget.Close();
return;
}
// 返回真,todo...
//else {}
var ajax = this.Ajax = new oAjax();
ajax.url = Upload.GetIdUrl + '?rnd=' + Global.Random() + Upload.DirectoryID + Upload.Path + '&filename=' + encodeURIComponent(filename) + '&' + Upload.QueryString;
ajax.callback = function (content) {
content = content.split('|');
if (content.length < 2) throw new Error('錯誤的返回值。');
// 使上傳框可關閉
var enableClosed = true;
switch (content[0]) {
// 錯誤
// content : [-1, '錯誤信息']
case '-1':
content[1] && Widget.Error('上傳文件錯誤', content[1]);
reset();
break;
// 有沖突
// content : [0, '提示用文件名', '文件id', '文件大小', '圖標', '標識網絡硬盤是否開啟']
case '0':
if (content[1]) {
enableClosed = false;
var i = filename.lastIndexOf('.');
var openDisk = Upload.DiskSettingOpenDisk;//(content[5] == '1' ? true : false);
if (typeof InsertOne != 'undefined') {
Widget.Alert(
openDisk ? '文件已存在' : '溫馨提示',
[
openDisk ? '您網絡硬盤的“我的附件”目錄已經存在“' + filename + '”。帖子附件同時也是網絡硬盤中的文件,因此不能重名。' : '您以前曾上傳過同名的文件 “' + filename + '”。',
'請選擇操作:<br />',
'[<a href="javascript:;" onclick="InsertOne($(\'attachment\'), ',
content[2],
', [\'', filename.substring(0, i), '\', \'' + filename.substr(i + 1) + '\'], \'',
content[3],
'\', \'',
openDisk ? '網絡硬盤:\\我的附件' : '',
'\', \'',
content[4], '\');Widget.InfoClose()">',
openDisk ? '直接使用網絡硬盤中的文件插入為附件' : '使用以前上傳的同名文件插入為附件,不再上傳',
'</a>]',
'<br />',
openDisk ? '[<a href="javascript:;" id="cover_file">上傳并覆蓋原文件</a>]<br />' : '',
'[<a href="javascript:;" id="rename_file">' , openDisk ? '上傳并自動重命名' : '請繼續上傳', '</a>]',
'<br />',
'[<a href="javascript:;" id="cancel_file">取消該文件的上傳</a>]'
].join(''),
function () {
if (!enableClosed) {
closeUploadWidget();
reset();
}
}
);
}
else{
Widget.Alert(
'您將要上傳的文件',
[
content[1] + '在網絡硬盤中已經存在<br />請選擇操作<br />',
'[<a href="javascript:;" id="cover_file">上傳并覆蓋原文件</a>]<br />',
'[<a href="javascript:;" id="rename_file">上傳并自動重命名</a>]<br />',
'[<a href="javascript:;" id="cancel_file">取消該文件的上傳</a>]'
].join(''),
function () {
if (!enableClosed) {
closeUploadWidget();
reset();
}
}
);
}
// cover
$('cover_file') &&
($('cover_file').onclick = function () {
enableClosed = true;
Widget.InfoClose();
ajax.url += '&iscover=true';
ajax.send();
return false;
});
// rename
$('rename_file').onclick = function () {
enableClosed = true;
Widget.InfoClose();
ajax.url += '&isrename=true';
ajax.send();
return false;
};
$('cancel_file').onclick = function () {
Widget.InfoClose();
return false;
};
$('popup_info_close').style.display = 'none';
$('popup_info_confirm').style.display = 'none';
}
//reset();
break;
// 沒沖突
// content: [1, 'guid']
case '1':
default:
Upload.Show();
var obj = {};
switch (content[content.length - 1]) {
case 'iscover':
obj.iscover = true;
break;
case 'isrename':
obj.isrename = true;
filename = content[content.length - 2]
break;
}
name = content[1] || content;
change (e, th, obj);
break;
}
delete ajax;
if (enableClosed) closeUploadWidget();
};
ajax.send();
}
function closeUploadWidget () {
if (Upload.IsHide) {
Upload.IsHide = false;
Widget.Close();
}
}
function reset () {
// 重設
var form = Upload.oFileUpload.fileUpload.form;
form && form.reset();
}
function change (e, th, obj) {
// 判斷是否已經存在相同的文件
for (var item in Upload.Files) {
var curFile = Upload.Files[item];
if (!curFile.deleted && curFile.filename == filename) {
Widget.Alert('不能上傳該文件', '“<font color=\"green\">' + filename + '</font>”<br />網絡硬盤中已存在同名文件,不能重復上傳');
return;
}
}
// 增加一個未上傳文件個數
Upload.Count++;
// 清理無上傳文件項的提示信息
var tipInfo = $('empty');
if (tipInfo) {
Upload.TipInfo = tipInfo;
oNode.RemoveNode(tipInfo, $('item_container'));
}
// 呈現該上傳條目
var file_item = oNode.CreateNode('ul');
oNode.AddNode(file_item, $('item_container'));
file_item.tabIndex = Upload.Indexs.length + 1;
file_item.innerHTML = $('file_upload_item').innerHTML.replace(/\$/g, name);
// render
Upload.Render();
// info
Upload.Indexs.push(name);
Upload.Files[name] = {
name: name,
index: Upload.Indexs.length - 1,
// file input HTMLElement
file_upload: ofu.fileUpload,
// file name String
filename: filename,
// `ul` container HTMLElement
file_item: file_item,
// process bar
processing: $('processing_' + name),
// file icon HTMLElement
file_icon: $('fileicon_' + name),
// file name HTMLElement
file_name: $('filename_' + name),
// file size HTMLElement
file_size: $('filesize_' + name),
// file status HTMLElement
file_status: $('filestatus_' + name),
iscover: !!obj.iscover,
isrename: !!obj.isrename,
deleted: false,
finished: false
};
Upload.Files[name]['file_name'].innerHTML
= Upload.Files[name]['file_name'].title
= filename;
// 刪除按鈕
Upload.AddDeleteButton(name);
Upload.Files[name]['file_size'].innerHTML = '準備上傳';
//Upload.Files[name]['file_status'].innerHTML = '<span><a href="javascript:void(0);" class="delete" title="刪除">刪除</a></span>';
// reset
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -