bootstrap 文件上傳插件 fileinput 和表格插件 的使用總結(jié)

1. 準(zhǔn)備工作

1.1 前端引入相關(guān)插件

index.html
 <link href="./bootstrap-3.3.7/css/bootstrap.css" rel="stylesheet">
     <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link href="./css/fileinput.min.css" media="all" rel="stylesheet" type="text/css"/>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="./css/bootstrap-table.min.css">

   <link href="./font-awesome-4.7.0/css/font-awesome.css" media="all"
          rel="stylesheet" type="text/css"/>
    <link href="./themes/explorer-fa/theme.css" media="all" rel="stylesheet" type="text/css"/>
    <script src="./js/jquery-3.2.1.min.js"></script>
    <script src="./js/fileinput.min.js" type="text/javascript"></script>
    <script src="./themes/explorer-fa/theme.js" type="text/javascript"></script>
    <script src="./themes/fa/theme.js" type="text/javascript"></script>
    <script src="./bootstrap-3.3.7/js/bootstrap.js" type="text/javascript"></script>
    <script src="./js/zh.js" type="text/javascript"></script>


    <!-- Latest compiled and minified JavaScript -->
    <script src="./js/bootstrap-table.min.js"></script>

    <!-- Latest compiled and minified Locales -->
    <script src="./js/bootstrap-table-zh-CN.min.js"></script>
    <script src="./js/jquery-form.js" type="text/javascript"></script>

1.2 后端服務(wù)結(jié)構(gòu)

使用bootstrap做后端的服務(wù)


目錄結(jié)構(gòu)

2. 文件上傳插件

2.1引入文件上傳插件

 <form id="add_commodity_form" method="post" enctype="multipart/form-data">

        <div class="form-group">
            <div class="file-loading">
                <input id="add_bachPic" type="file" multiple class="file-loading" data-overwrite-initial="false"
                       data-min-file-count="1">
            </div>
        </div>
    </form>
    
    $("#add_bachPic").fileinput({
        language : 'zh',
        theme: 'fa',
        uploadUrl:"dataGet/upload", // you must set a valid URL here else you will get an error
        fileType: "any",
        overwriteInitial: false,
        showPreview: true,              //展前預(yù)覽
        showUpload: true,              //不顯示上傳按鈕
        showCaption: true,             //不顯示文字表述
        uploadAsync:false,                             //采用同步上傳
        removeFromPreviewOnError:true,
        showBrowse: false,
        browseOnZoneClick: true,       //當(dāng)文件不符合規(guī)則,就不顯示預(yù)覽
        maxFileCount: 5,
        maxFileSize: 1024*10                            //單位為kb蘸际,如果為0表示不限制文件大小
    }).on("filebatchuploadsuccess", function (event, data, previewId, index) {
        console.log("filebatchuploadsuccess");
        console.log(data);
        $('#table-large-columns').bootstrapTable('refresh');
    }).on('filebatchuploaderror', function(event, data, msg) {
        console.log("filebatchuploaderror");
        console.log(data);
        $('#table-large-columns').bootstrapTable('refresh'); //會(huì)對(duì)表格插件刷新處理
    });

2.2后端服務(wù)處理

@RequestMapping(value = "upload")
    @ResponseBody
    public ModelMap upload(@RequestParam("file_data") MultipartFile[] files, HttpServletRequest request) {
        ModelMap result = new ModelMap();
        // 獲取路徑下的文件
        File dfile = new File(filePath);
        File[] filess = null;
        List<String> fileNameList = new ArrayList<>();
        if (dfile.isDirectory()) {
            filess = dfile.listFiles();
        }
        if (filess != null ) {
            for (File file1 : filess) {
                fileNameList.add(file1.getName());
            }

        }

        for (MultipartFile file : files) {
            // 獲取文件名,判斷是否為空
            String fileName = file.getOriginalFilename();
            logger.info("上傳的文件名為:" + fileName);
            if (file.isEmpty()) {
                result.put("error", "文件" + fileName + "為空!");
                return result;
            }
            // 判斷是否已經(jīng)存在
            if (fileNameList.contains(fileName)) {
                result.put("error", "文件" + fileName + "已經(jīng)存在!");
                return result;
            } else {
                fileNameList.add(fileName);
            }

        }
        for (MultipartFile file : files) {
            // 獲取文件名
            String fileName = file.getOriginalFilename();
            File dest = new File(filePath + "\\" + fileName);
            // 檢測(cè)是否存在目錄
            if (!dest.getParentFile().exists()) {
                dest.getParentFile().mkdirs();
            } else {
                try {
                    file.transferTo(dest);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

        }
        result.put("success", "上傳成功!");
        return result;
    }

3.表格插件使用

3.1 前端頁(yè)面

<table id="table-large-columns",
           data-toggle="table"
           data-url="/dataGet/tableData"
           data-query-params="queryParams"
           data-pagination="true"
           data-search="true"
           data-show-refresh="true"
           data-show-toggle="true"
           data-show-columns="true"
           data-toolbar="#toolbar">
        <thead>
        <tr>
            <th data-field="name">文件名</th>
            <th data-field="size">大小</th>
            <th data-field="action" data-formatter="actionFormatter" data-events="actionEvents">操作</th>
        </tr>
        </thead>
    </table>
    
    
     function queryParams() {
        return {
            per_page: 10000,
            page: 1
        };
    }

    //操作欄的格式化
    function actionFormatter(name, row, index) {
        var id = row.name;
        var result = "";
        console.log("id:" + id + ",row" + row.name + "index:" + index);
        result += "<a href='javascript:;' class='btn btn-primary btn-sm' onclick=\"downloadById('" + id + "')\" title='下載'>下載</a>";
        result += "<a href='javascript:;' class='btn btn-warning btn-sm' onclick=\"deleteById('" + id + "')\" title='刪除'>刪除</a>";
        return result;
    }

    function downloadById(id) {
        var $eleForm = $("<form method='get'></form>");

        $eleForm.attr("action","dataGet/download/"+id);

        $(document.body).append($eleForm);

        //提交表單,實(shí)現(xiàn)下載
        $eleForm.submit();
    }

    function deleteById(id) {
        jQuery.ajax({
            url: "dataGet/delete",
            type: "GET",
            data: {id: id},
            dataType: "json",
            success: function (data, status) {
                console.log("data" + data);
                console.log("status" + status);
                if (data == "success") {
                    $('#table-large-columns').bootstrapTable('refresh');
                    alert("delete success!");
                } else {
                    $('#table-large-columns').bootstrapTable('refresh');
                    alert("delete fail!");
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                console.log("error");
                console.log(XMLHttpRequest.status);
                console.log(XMLHttpRequest.readyState);
                console.log(textStatus);
            }

        })
    }

3.2 后端處理


    @RequestMapping(value = "tableData")
    @ResponseBody
    public JSON GetData(int per_page, int page) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //獲取文件夾下文件的數(shù)目
        File file = new File(filePath);
        File[] files = null;
        if (file.isDirectory()) {
            files = file.listFiles();
        }
        int total = 0;
        if (files != null) {
            total = files.length;
        }
        JSONArray jsonArray = new JSONArray();
        List<TableData> list = new ArrayList<>();
        if(files!=null&&files.length>0) {
            for (File f : files) {
                TableData tableData = new TableData();
                String name = f.getName();
                String size = dataGetService.formetFileSize(f.length());
                tableData.setName(name);
                tableData.setSize(size);
                list.add(tableData);
            }
        }
        int end = page * per_page;
        if (total < (end)) {
            end = total;
        }
        jsonArray = JSONArray.parseArray(JSON.toJSONString(list.subList((page - 1) * per_page, end)));
        return jsonArray;
    }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末澜公,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宴咧,更是在濱河造成了極大的恐慌拳喻,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件低千,死亡現(xiàn)場(chǎng)離奇詭異配阵,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)示血,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)闸餐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人矾芙,你說(shuō)我怎么就攤上這事舍沙。” “怎么了剔宪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵拂铡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我葱绒,道長(zhǎng)感帅,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任地淀,我火速辦了婚禮失球,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘帮毁。我一直安慰自己实苞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布烈疚。 她就那樣靜靜地躺著黔牵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪爷肝。 梳的紋絲不亂的頭發(fā)上猾浦,一...
    開(kāi)封第一講書(shū)人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音灯抛,去河邊找鬼金赦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛对嚼,可吹牛的內(nèi)容都是我干的夹抗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼猪半,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼兔朦!你這毒婦竟也來(lái)了偷线?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤沽甥,失蹤者是張志新(化名)和其女友劉穎声邦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體摆舟,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亥曹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恨诱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媳瞪。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖照宝,靈堂內(nèi)的尸體忽然破棺而出蛇受,到底是詐尸還是另有隱情,我是刑警寧澤厕鹃,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布兢仰,位于F島的核電站,受9級(jí)特大地震影響剂碴,放射性物質(zhì)發(fā)生泄漏把将。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一忆矛、第九天 我趴在偏房一處隱蔽的房頂上張望察蹲。 院中可真熱鬧,春花似錦催训、人聲如沸洽议。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绞铃。三九已至镜雨,卻和暖如春嫂侍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荚坞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工挑宠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颓影。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓各淀,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親诡挂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子碎浇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容