前端使用easyui框架,后台使用JAVA 的JFinal框架开发

功能描述:实现附件上传功能。文件上传路径为:。。/upload(上传文件夹)/身份证号/慢病编码/上传的附件。

细节要求:实现多图片上传,上传后可在前台页面实现二次增加和删除

1.前台页面显示:填写身份证号、选择慢病信息,点击“上传附件”按钮选择要上传的文件

     <tr>
<td class="pe-label"><span class="sp_waning">*</span>身份证号:</td>
<td class="pe-content">
<input id="newchrApply_app05" name="newchrApply_app05" class="easyui-textbox">
</td>
<td class="pe-label">申请疾病:</td>
<td class="pe-content">
<input id="newchrApply_app10" name="newchrApply_app10" class="easyui-combobox">
</tr>
<tr>
<td class="pe-label">附件上传:</td>
<td class="pe-content" colspan="3">
<span class="ui_button_primary"><label for="newchrApply_file1">上传附件</label></span>
<input id="newchrApply_file1" name="newchrApply_file1" type="file" style="position:absolute;clip:rect(0 0 0 0);" multiple="multiple">
</td>
</tr>
<tr>
<td class="pe-label">上传附件名称:</td>
<td class="pe-content" colspan="3">
<ul id='content'></ul>
</td>
</tr>

表单显示Html代码

2.在“上传附件名称”中显示上传的文件信息及删除按钮。

 var chrApply_filesTemp = [];//保存上传的附件集合
//显示上传文件名
var test = document.getElementById('newchrApply_file1');
test.addEventListener('change', function() {
var t_files = this.files;
var p_idnum = $.trim($('#newchrApply_app05').val()); //身份证号
var p_icd01 = $('#newchrApply_app10').combobox('getValue');
if(p_idnum == '' || p_icd01 == '') {
$.messager.alert('提示', '请输入身份证号或选择疾病!', 'warning');
return;
}
var p_app01 = $.trim($('#newchrApply_app01').val());
if(p_app01 == '') {
var p_code = "SQ" + CreateCode(3);
$('#newchrApply_app01').val(p_code);
}
var str = '';
if(t_files.length > 0) {
var formData = new FormData();
for(var i = 0; i < t_files.length; i++) {
formData.append("file_cont" + i, t_files[i]);
}
formData.append("fileCount", t_files.length);
formData.append("app05", p_idnum);
formData.append("app10", p_icd01);
$.ajax({
url: '/ChrApply/UploadFiles',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(result) {
if(result.code > 0) {
var p_filesname = [];
if(chrApply_filesTemp.length > 0) {
for(var i = 0; i < chrApply_filesTemp.length; i++) {
if(p_filesname.indexOf(chrApply_filesTemp[i].name) == -1) {
p_filesname.push(chrApply_filesTemp[i].name);
}
}
}
var chrApply_filesUp = t_files; //新上传的文件集合
if(chrApply_filesUp.length > 0) {
for(var i = 0; i < chrApply_filesUp.length; i++) {
if(p_filesname.indexOf(chrApply_filesUp[i].name) == -1) {
chrApply_filesTemp.push({
'name': chrApply_filesUp[i].name,
'size': chrApply_filesUp[i].size
});
}
}
}
for(var i = 0, len = chrApply_filesTemp.length; i < len; i++) {
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>' +
' <input id="delfj" type="button" value="删除" onclick="delAnnex(' + i + ')" ></li>';
}
document.getElementById('content').innerHTML = str;
} else {
$.messager.alert('提示', result.msg, 'warning');
}
}
});
}
}, false);

上传附件JS代码

     /**
* 上传附件(多文件上传)
*
*/
public void UploadFiles() {
MessageData data = new MessageData();
try {
UploadFile file0 = getFile("file_cont0");
String UploadPath0 = file0.getUploadPath();
Integer fileCount = getParaToInt("fileCount");
String app05 = getPara("app05");// 身份证号
String app10 = getPara("app10");// 疾病编码
String path = "upload/" + app05 + "/" + app10 + "/".trim(); // 1.新建【身份证】文件夹
FileOperate fo = new FileOperate();
fo.createFolder(UploadPath0 + "/" + app05);
File directory = new File(UploadPath0 + "/" + app05);// 设定为当前文件夹
// System.out.println(directory.getCanonicalFile());//返回类型为File
// 2.在【身份证】文件夹下-->建立【疾病编码】文件夹
FileOperate fo_1 = new FileOperate();
fo_1.createFolder(directory.getCanonicalFile() + "/" + app10); String realPath = getSession().getServletContext().getRealPath(path);
// 数据库添加附件信息
for (int i = 0; i < fileCount; i++) {
UploadFile file = getFile("file_cont" + i);
String fileName = file.getFileName();
String newName = fileName; // 移动文件:从oldPath路径 -->移动到-->newPath路径,并删除oldPath路径 里的文件
String oldPath = file.getUploadPath() + "\\" + newName.trim();
String newPath = file.getUploadPath() + "\\" + app05 + "\\" + app10 + "\\" + newName.trim();
file.getFile().renameTo(new File(realPath + "/" + newName));
fo_1.moveFile(oldPath, newPath);
}
data.setCode(1);
} catch (Exception e) {
data.setCode(0);
data.setMsg("上传失败!" + e.getCause().getMessage());
} finally {
JSONObject json = JSONObject.fromObject(data);
renderJson(json.toString());
}
}

上传附件后台JAVA代码

3.附件上传保存路径:

4.实现前台页面删除附件功能

 //删除
function delAnnex(id) {
var del_idnum = $.trim($('#newchrApply_app05').val()); //身份证号
var del_icd01 = $('#newchrApply_app10').combobox('getValue');
var del_name = document.getElementById("sp_name_" + id).innerText; $.ajax({
url: '/ChrApply/DeleteAnnex',
type: 'POST',
data: {
'app05': del_idnum,
'app10': del_icd01,
'ann01': del_name
},
success: function(result) {
if(result.code > 0) {
// 删除集合中的元素
for(var i = 0; i < chrApply_filesTemp.length; i++) {
var flg = isEqual(chrApply_filesTemp[i].name.valueOf(), del_name.valueOf());
if(flg == true) {
chrApply_filesTemp.splice(i, 1);
}
}
var first = document.getElementById("li_" + id);
first.remove();
} else {
$.messager.alert('提示', result.msg, 'warning');
}
}
});
}

删除按钮JS代码

     /**
* 删除附件
*/
public void DeleteAnnex() {
MessageData data = new MessageData();
try {
String app05 = getPara("app05");// 身份证号
String app10 = getPara("app10");// 疾病编码
String ann01 = getPara("ann01");// 文件名
String url = "upload/" + app05 + "/" + app10 + "/" + ann01.trim(); // 删除上传到服务器的文件
String realPath = getSession().getServletContext().getRealPath(url);
File file = new File(realPath);
file.delete(); data.setCode(1);
} catch (Exception e) {
data.setCode(0);
data.setMsg("删除申诉材料失败!" + e.getCause().getMessage());
} finally {
JSONObject json = JSONObject.fromObject(data);
renderJson(json.toString());
}
}

删除附件后台JAVA代码

注:上传附件及删除附件后台JAVA代码中使用到的UploadFile类及FileOperate类的代码请参考我的博文《JAVA文件操作工具类(读、增、删除、复制)》https://www.cnblogs.com/KLLQBKY/p/9293154.html

Easyui前端、JAVA后台 上传附件的更多相关文章

  1. java 后台上传文件

    java 后台上传文件 public static String uploadFile(File file, String RequestURL) throws IOException { Strin ...

  2. 织梦DEDE网站后台如何上传附件

    如题,织梦DEDE网站后台如何上传附件?今天本人遇到这样的问题,在网站后台里点击一番后,成功上传了一个pdf文件和doc文件,特来分享经验. 工具/原料 织梦dede网站 doc文件 方法/步骤 1 ...

  3. java上传附件,批量下载附件(一)

    上传附件代码:借助commons-fileupload-1.2.jar package com.str; import java.io.BufferedInputStream;import java. ...

  4. java上传附件含有%处理或url含有%(URLDecoder: Illegal hex characters in escape (%) pattern - For input string)

    在附件名称中含有%的时候,上传附件进行url编码解析的时候会出错,抛出异常: Exception in thread "main" java.lang.IllegalArgumen ...

  5. jmeter 上传附件脚本报Non HTTP response code: java.io.FileNotFoundException

    如果上传附件报如下错误,就需要把附件放到和脚本同一路径下就解决了

  6. 基于Flask开发网站 -- 前端Ajax异步上传文件到后台

    大家好,我是辰哥~ 辰哥最近利用空闲时间在写一个在线可视化平台,过程中也觉得一些技术还是比较有意思的,所以就以模块化的形式分享出来.如:从网页界面(前端)上传文件到服务器(后端). 放一下该模块的界面 ...

  7. jquery 通过ajax FormData 对象上传附件

    之前上传附件都是用插件,或者用form表单体检(这个是很久以前的方式了),今天突发奇想,自己来实现附件上传,具体实现如下 html: <div>   流程图: <input id=& ...

  8. java图片上传(mvc)

    最近有开始学起了java,好久没写文章了,好久没来博客园了.最近看了看博客园上次写的图片上传有很多人看,今天在一些篇关于java图片上传的.后台接收用的是mvc.不墨迹了,直接上图. 先看目录结构.i ...

  9. java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载

    java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载 实现功能:zip文件上传,后台自动解压,Jstree树目录(遍历文件),editor.md预览 采用Spring+Sp ...

随机推荐

  1. C# 创建一个WCF服务

    做代码统计,方便以后使用: app.config配置文件设置: <configuration> <system.serviceModel> <bindings> & ...

  2. GUI应用程序架构的十年变迁:MVC,MVP,MVVM,Unidirectional,Clean

    十年前,Martin Fowler撰写了 GUI Architectures 一文,至今被奉为经典.本文所谈的所谓架构二字,核心即是对于对于富客户端的 代码组织/职责划分 .纵览这十年内的架构模式变迁 ...

  3. Git和GitHub在线学习资源整理(转)

    原文地址:http://blog.csdn.net/duqi_2009/article/details/12646711 电子书 GotGitHub Git Workflow 文章 GitHub Fu ...

  4. cf1072D. Minimum path(BFS)

    题意 题目链接 给出一个\(n \times n\)的矩阵,允许修改\(k\)次,求一条从\((1, 1)\)到\((n, n)\)的路径.要求字典序最小 Sol 很显然的一个思路是对于每个点,预处理 ...

  5. cf1072B. Curiosity Has No Limits(枚举)

    题意 题目链接 给出两个序列\(a, b\),求出一个序列\(t\),满足 \[a_i = t_i | t_{i + 1}\] \[b_i = t_i \& t_{i + 1}\] 同时,\( ...

  6. JavaScript数组常见操作

    JavaScript数组常见操作 Tip: 右键在新标签中打开查看清晰大图 下面介绍JavaScript中的数组对象遍历.读写.排序等操作以及与数组相关的字符串处理操作 创建数组 一般使用数组字面量[ ...

  7. angular怎么样注销事件

    angular怎么样注销事件 $scope.$on("$destroy", function() { //清除配置,不然scroll会重复请求 }) 在Controller中监听$ ...

  8. wxGridCellEditor

    wxGridCellEditor Class Referenceabstract Class List by Category » Grid Related Classes #include < ...

  9. mongodb 3.4 学习 (三)复制集

    复制集(replica set) 复制集是一组mongodb的进程维护同样的数据集,提供冗余与高可用性.最小的复制集由3台服务器(或者3个实例)组成,最多1个primary和2个secondary实例 ...

  10. Web系统常见安全漏洞及解决方案-SQL盲注

    关于web安全测试,目前主要有以下几种攻击方法: 1.XSS 2.SQL注入 3.跨目录访问 4.缓冲区溢出 5.cookies修改 6.Htth方法篡改(包括隐藏字段修改和参数修改) 7.CSRF ...