📄 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 + -