⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 upload.js

📁 asp的bbs程序
💻 JS
📖 第 1 页 / 共 2 页
字号:
// 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 + -