Easyui前端、JAVA後臺 上傳附件

来源:https://www.cnblogs.com/KLLQBKY/archive/2018/07/10/9289975.html
-Advertisement-
Play Games

前端使用easyui框架,後端使用JAVA 的JFinal框架開發 功能描述:實現附件上傳功能。文件上傳路徑為:。。/upload(上傳文件夾)/身份證號/慢病編碼/上傳的附件。 細節要求:實現多圖片上傳,上傳後可在前臺頁面實現二次增加和刪除 1.前臺頁面顯示:填寫身份證號、選擇慢病信息,點擊“上傳 ...


前端使用easyui框架,後端使用JAVA 的JFinal框架開發

功能描述:實現附件上傳功能。文件上傳路徑為:。。/upload(上傳文件夾)/身份證號/慢病編碼/上傳的附件。

細節要求:實現多圖片上傳,上傳後可在前臺頁面實現二次增加和刪除

1.前臺頁面顯示:填寫身份證號、選擇慢病信息,點擊“上傳附件”按鈕選擇要上傳的文件

前臺頁面代碼:

 1     <tr>
 2     <td class="pe-label"><span class="sp_waning">*</span>身份證號:</td>
 3     <td class="pe-content">
 4         <input id="newchrApply_app05" name="newchrApply_app05" class="easyui-textbox">
 5     </td>
 6     <td class="pe-label">申請疾病:</td>
 7     <td class="pe-content">
 8         <input id="newchrApply_app10" name="newchrApply_app10" class="easyui-combobox">
 9 </tr>
10 <tr>
11    <td class="pe-label">附件上傳:</td>
12    <td class="pe-content" colspan="3">
13       <span class="ui_button_primary"><label for="newchrApply_file1">上傳附件</label></span>
14       <input id="newchrApply_file1" name="newchrApply_file1" type="file" style="position:absolute;clip:rect(0 0 0 0);" multiple="multiple">
15    </td>
16 </tr>
17 <tr>
18    <td class="pe-label">上傳附件名稱:</td>
19    <td class="pe-content" colspan="3">
20       <ul id='content'></ul>
21    </td>
22 </tr>
表單顯示

 

2.在“上傳附件名稱”中顯示上傳的文件信息及刪除按鈕。

 1 var chrApply_filesTemp = [];//保存上傳的附件集合
 2 //顯示上傳文件名
 3 var test = document.getElementById('newchrApply_file1');
 4 test.addEventListener('change', function() {
 5    var t_files = this.files;
 6    var p_idnum = $.trim($('#newchrApply_app05').val()); //身份證號
 7    var p_icd01 = $('#newchrApply_app10').combobox('getValue');
 8    if(p_idnum == '' || p_icd01 == '') {
 9       $.messager.alert('提示', '請輸入身份證號或選擇疾病!', 'warning');
10       return;
11    }
12    var p_app01 = $.trim($('#newchrApply_app01').val());
13    if(p_app01 == '') {
14       var p_code = "SQ" + CreateCode(3);
15       $('#newchrApply_app01').val(p_code);
16    }
17    var str = '';
18    if(t_files.length > 0) {
19       var formData = new FormData();
20       for(var i = 0; i < t_files.length; i++) {
21          formData.append("file_cont" + i, t_files[i]);
22       }
23       formData.append("fileCount", t_files.length);
24       formData.append("app05", p_idnum);
25       formData.append("app10", p_icd01);
26       $.ajax({
27          url: '/ChrApply/UploadFiles',
28          type: 'POST',
29          data: formData,
30          processData: false,
31          contentType: false,
32          success: function(result) {
33             if(result.code > 0) {
34                var p_filesname = [];
35                if(chrApply_filesTemp.length > 0) {
36                   for(var i = 0; i < chrApply_filesTemp.length; i++) {
37                      if(p_filesname.indexOf(chrApply_filesTemp[i].name) == -1) {
38                         p_filesname.push(chrApply_filesTemp[i].name);
39                      }
40                   }
41                }
42                var chrApply_filesUp = t_files; //新上傳的文件集合
43                if(chrApply_filesUp.length > 0) {
44                   for(var i = 0; i < chrApply_filesUp.length; i++) {
45                      if(p_filesname.indexOf(chrApply_filesUp[i].name) == -1) {
46                         chrApply_filesTemp.push({
47                            'name': chrApply_filesUp[i].name,
48                            'size': chrApply_filesUp[i].size
49                         });
50                      }
51                   }
52                }
53                for(var i = 0, len = chrApply_filesTemp.length; i < len; i++) {
54                   str += '<li id="li_' + i + '">名稱:<span id="sp_name_' + i + '">' + chrApply_filesTemp[i].name + '</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大小:<span id="sp_size_' + i + '"> ' + parseInt(chrApply_filesTemp[i].size / 1024) + 'KB</span>' +
55                      ' <input id="delfj" type="button" value="刪除" onclick="delAnnex(' + i + ')" ></li>';
56                }
57                document.getElementById('content').innerHTML = str;
58             } else {
59                $.messager.alert('提示', result.msg, 'warning');
60             }
61          }
62       });
63    }
64 }, false);
上傳附件
 1 //刪除
 2 function delAnnex(id) {
 3    var del_idnum = $.trim($('#newchrApply_app05').val()); //身份證號
 4    var del_icd01 = $('#newchrApply_app10').combobox('getValue');
 5    var del_name = document.getElementById("sp_name_" + id).innerText;
 6 
 7    $.ajax({
 8       url: '/ChrApply/DeleteAnnex',
 9       type: 'POST',
10       data: {
11          'app05': del_idnum,//身份證號
12          'app10': del_icd01,//慢病編碼
13          'ann01': del_name//附件名稱
14       },
15       success: function(result) {
16          if(result.code > 0) {
17             // 刪除集合中的元素
18             for(var i = 0; i < chrApply_filesTemp.length; i++) {
19                var flg = isEqual(chrApply_filesTemp[i].name.valueOf(), del_name.valueOf());
20                if(flg == true) {
21                   chrApply_filesTemp.splice(i, 1);
22                }
23             }
24             var first = document.getElementById("li_" + id);
25             first.remove();
26          } else {
27             $.messager.alert('提示', result.msg, 'warning');
28          }
29       }
30    });
31 }
刪除附件

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在JavaScript中可以用=賦值運算符將數值存儲在變數中 把數值 7 賦給變數 a。 把變數 a 中的內容賦給變數 b。 ...
  • 本節筆記根據css中文手冊整理,內容已做成思維導圖。下載地址https://files.cnblogs.com/files/kuaizifeng/css.xmind.zip。 css(Csacading Style Sheet)級聯樣式表,是控制網頁樣式並允許將樣式信息與網頁內容分離的一種標記性語言 ...
  • JavaScript 數據類型 JavaScipt提供七種其中不同的data types數據類型 定義變數(關鍵詞為 var) ...
  • 校驗郵政編碼(由六位組成)。 只能輸入5-20個以字母開頭、可帶數字、“_”、“.”的字串。 ...
  • 註釋掉當前行 註釋多行數據 ...
  • 目錄 1、徑向漸變 2、 線性漸變 3、 背景圖片裁剪 4、 背景圖片大小 5、 邊框圖片 6、 邊框圓角 7、 邊框陰影 8、位移 9、 傾斜 10、 旋轉 11、 縮放 12、 文本換行 13、 文本溢出 1、徑向漸變 8、位移 2018-07-10 20:26:02 擢摩一下改 於教室 ...
  • 剛入門vue ,打算用vue的腳手架做一個小項目。需要用到第三方的api,無奈遇到各種各樣的問題。 比如 Access-Control-Allow-Origin ,或者使用了ajax的jsonp模式之後也會出現個別api不相容這個模式而出現另一個錯誤。還有的需要修改後端php之類的,頭大。 後來又聽 ...
  • snowfall.jquery.js是樹葉等圖片飄落的插件,但是只支持一種圖片的飄落效果,但是我遇到的情況需要飄落未知數種類的圖片,即圖片有多種;那麼就要對原插件做些修改; 在原snowfall.js找到下麵代碼: 將上面代碼修改成: 修改前原插件中的 options.image是一個圖片地址,修改 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...