前端使用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. 网站部署中遇到的问题-网页中js,css和图片资源无法加载

    问题描述: 打开的网页跑版,图片无法加载,用控制台调试发现css和js都没有加载. 原因: 没有启用IIS"静态内容". 解决方法: 设置"打开或关闭windows功能& ...

  2. React.js学习小结

    最近一段时间都在学习React.js,感觉还不错,现在把自己的一些学习笔记记录一下,留着以后学习查看. 0.React全家桶(技术栈) 1.React主体 2.WebPack:grunt.gulp自动 ...

  3. Maven之依赖关系

    在maven的管理体系中,各个项目组成了一个复杂的关系网,但是每个项目都是平等的,是个没有贵贱高低,众生平等的世界,全球每个项目从理论上来说都可以相互依赖.就是说,你跟开发Spring的大牛们平起平坐 ...

  4. grunt 常用插件有哪些?

    作者:顾城链接:https://www.zhihu.com/question/21917526/answer/19747259来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  5. IE8按F12开发人员工具不显示

    一直不喜欢用IE,不过为了项目需要,不得不使用IE 而且此功能只支持IE8,(⊙﹏⊙)b) 当按F12调出开发人员工具的时候发现显示不出来了,在任务栏里有显示,将鼠标放在任务栏的开发人员工具上, 背景 ...

  6. html跨域获取数据

    a.com下的a.html,需要嵌入b.com下的b.html.这时建一个静态页面c.html将c.html放到a.com服务器中.b.html在嵌入c.html.这样,将参数值传输到c.html中, ...

  7. HTML 5入门知识(二)

    使用HTML 5结构标签 <article> <article>标签可以在网页中定义独立的内容,包括文章.博客和用户评论等.一个article元素通常有它自己的标题,一般放在一 ...

  8. matlab练习程序(毛玻璃模糊)

    算是一种特效模糊方式吧,算法原理就是用邻域随机像素代替当前所处理的像素就可以了. 效果如下图所示: 原图: 处理后结果: matlab代码如下: clear all; close all;clc; i ...

  9. Flask入门 flask结构 url_for 重定向(一)

    Flask入门(一) 1 安装虚拟环境Mac,linux sudo pip install virtualenv ​ ubuntu系统 sudo apt-get install python-virt ...

  10. Laravel 生成小程序图文海报最佳方案之一

    目前已经更新 2.0 版本,支持生成的海报关联Model,支持是否重新生成海报等功能,具体更新请移步 github: laravel-miniprogram-poster 微信小程序官方并未提供分享到 ...