Ext多文件上传下载
以下代码为项目应用中整理,仅供参考。
一.多文件上传
1.前台Js代码事例
items : [{xtype : 'button',text : '添加附件',iconCls : 'silk_page_add',handler : function() {Ext.getCmp("upfile").addFile();}}, {xtype : 'multifileupload',width : 750,allowBlank : false,fileConfig : {xtype : 'fileuploadfield',emptyText : '选择文件上传',fieldLabel : '上传文件',anchor : '95%',buttonCfg : {text : '',iconCls : 'silk_folder_find'}},id : 'upfile',startId : 'post',startName : 'post',labelWidth : 70,limit : 10,allowBlank : false} ]
2.后台代码获取上传附件
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
Set<MultipartFile> fileset = new LinkedHashSet<MultipartFile>();
for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {String key = (String) it.next();MultipartFile file = multipartRequest.getFile(key);if (file.getOriginalFilename().length() > 0) {fileset.add(file);}
}
注:多附件时可考虑专门建立一个附件表存放附件,在表单提交时需更新附件表,
同时将多个附件的主键ID以”,”隔开存到主表中。
二.多文件展示,下载,删除
1.前台Js代码,创建fieldSet
function createDownLoadFieldSet(data,messageId) {downLoadFieldSet = new Ext.form.FieldSet({title : '附件下载',border : true,width : '100%',layout : 'column',autoHeight : true,collapsible: true,collapsed : true});// data为附件表的主键ID,多个以;隔开var attachUrls = data;var attachaUrlArr = attachUrls.split(";");attachaUrlArr.pop();Ext.each(attachaUrlArr, function(urlid) {callBackUrl(urlid,messageId);}) }
2.Js附件展示代码
function callBackUrl(urlid,messageId){Ext.Ajax.request({url : SMIS.CTX+'/work/post/postListController/getDocumentByUuid.do',method : 'POST',params : {urlId : urlid},success : function(resp,opt) {var doc = Ext.util.JSON.decode(resp.responseText);// 附件路径var url = doc.attachmentvar pathArr = url.split("/");var fileName = pathArr[pathArr.length - 1];var temp = downLoadFieldSet.add({columnWidth : 1,id : url,style : {padding : '0 0 5 0'},layout : 'column',items : [{xtype : 'label',width : '45%',text : fileName.substring(fileName.indexOf("_")+1,fileName.length),iconCls : 'silk_application_view_gallery'}, {xtype : 'label',width : '5%'}, {xtype : 'label',width : '25%',text : new Date(parseInt(fileName.substring(0,fileName.indexOf("_")))).toLocaleString(),iconCls : 'silk_application_view_gallery'}, {xtype : 'button',text : '下载附件',iconCls : 'silk_application_put',handler : function() {// Js方法,将URL中的中文进行编码url = encodeURI(url); window.open(SMIS.CTX + '/work/post/postListController/getAttachment.do?attachmentFile='+ url);url = decodeURI(url);}}, {xtype : 'button',text : '删除附件',iconCls : 'silk_application_put',handler : function(){removeAttachment(temp,messageId,url);}}]})},failure : function(){Ext.Msg.alert('执行失败',"执行失败!");}}) }
3.附件移除代码
function removeAttachment(temp,messageId,url){u = encodeURI(url); Ext.Ajax.request({url : SMIS.CTX + '/discipline/mechanism/SmisInstitutionController/deleteAttachment.do?messageId='+messageId+'&attachmentFile='+u,method : 'POST',success : function(resp ,action){if(Ext.util.JSON.decode(resp.responseText).success){Ext.Msg.alert("执行成功",Ext.util.JSON.decode(resp.responseText).msg);var newattachments = Ext.getCmp("attachments").getValue().replace(Ext.util.JSON.decode(resp.responseText).documentId,"");Ext.getCmp("attachments").setValue(newattachments);// 移除附件显示downLoadFieldSet.remove(Ext.getCmp(url));}else{Ext.Msg.alert("执行失败",Ext.util.JSON.decode(resp.responseText).msg);}},failure : function(){Ext.Msg.alert("执行失败","执行过程中发生错误!");}}) }
4.后台代码获取附件进行下载
java.net.URLDecoder.decode(request.getParameter("attachmentFile"),"UTF-8");
String attachmentFile = java.net.URLDecoder.decode(request.getParameter("attachmentFile"),"UTF-8");
response.setContentType("text/html;charset=UTF-8");
try {File file = new File(attachmentFile);InputStream fis = new BufferedInputStream(new FileInputStream(file));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();response.reset();response.addHeader("Content-disposition", "attachment;filename=\"" + new String(file.getName().getBytes("gb2312"), "ISO8859-1"));response.addHeader("Content-Length", "" + file.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());toClient.write(buffer);toClient.flush();toClient.close();
} catch (IOException ex) {ex.printStackTrace();
}
Ext多文件上传下载相关推荐
- SpringMVC整合fastdfs-client-java实现web文件上传下载
为什么80%的码农都做不了架构师?>>> 版权声明:本文为博主原创文章,转载请标明出处(http://blog.csdn.net/wlwlwlwl015)Thanks. 目录( ...
- springboot文件上传下载实战 ——文件上传、下载、在线打开、删除
springboot文件上传下载实战 文件上传 文件上传核心 UserFileController 文件上传测试 文件下载与在线打开 文件下载.在线打开核心 UserFileController 文件 ...
- springboot文件上传下载实战 —— 登录功能、展示所有文件
springboot文件上传下载实战 创建项目 pom.xml 数据库建表与环境准备 建表SQL 配置文件 application.properties 整体架构 前端页面 登录页面 login.ht ...
- JSP基础:(7)jsp分页与文件上传下载
目录 1 jsp分页 1.1 定义 1.2 Servlet控制器方法 2 文件上传下载 2.1 定义 2.2 SmartUpload 2.2.1 介绍 2.2.2 SmartUpload组件-Requ ...
- aws php 上传文件 限制大小_php如何实现文件上传下载-PHP问题
php实现文件上传下载的方法:首先创建好表单页面:然后将客户端文件上传到服务器端:最后将服务器端的文件移动到指定目录即可. 推荐:<PHP视频教程> PHP实现文件上传与下载 一.上传原理 ...
- Jersey框架:文件上传下载
企业应用中,文件管理是非常通用和重要的模块,功能包括文件上传.下载.文件管理(浏览.删除.权限等)等操作,本文针对Jersey框架实现文件的上传和下载. Jersey文件特性 Jersey实现文件上传 ...
- 教你如何实现c#文件上传下载功能
简单介绍一下c#文件上传下载功能实现. NuGet 安装SqlSugar Model文件下新建 DbContext 类 public class DbContext {public DbContext ...
- [C# 网络编程系列]专题十一:实现一个基于FTP协议的程序——文件上传下载器...
引言: 在这个专题将为大家揭开下FTP这个协议的面纱,其实学习知识和生活中的例子都是很相通的,就拿这个专题来说,要了解FTP协议然后根据FTP协议实现一个文件下载器,就和和追MM是差不多的过程的,相信 ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
最新文章
- 成功解决_catboost.CatBoostError: Invalid cat_features[4] = 8 value: index must be < 8.
- jquery实现抽奖系统
- 用户模式 内核模式 linux,linux – “内核模式”和“用户模式”硬件...
- flume的配置和开启
- thinkphp+mysql+join+where_thinkphp5.0 多join时where无法between
- POJ 2456 - Aggressive cows(二分)
- LeetCode 1066. 校园自行车分配 II(状态压缩DP)
- 再有人问你Java内存模型是什么,就把这篇文章发给他。
- 深入理解 RecyclerView 系列之:ItemDecoration
- 计算机的录像功能在哪里找,电脑录像的功能在哪,快速开启的方法分享
- VMware14虚拟机安装Mac OS教程
- UTrust4701F双界面NFC读写器读卡器测试软件读写NFC电子标签的文本|网址|电子名片|智能海报|蓝牙地址内容操作说明
- 【2021最新版】Linux面试题总结(48道题含答案解析)
- 架构师进阶篇-什么是架构师
- Flume 的使用场景详解
- Python函数式编程(fn)
- react + canvas点线动画背景
- python删除指定字符串之间所有行_python:删除包含字符串的pandas数据帧中的所有行...
- 在Word和OneNote中插入数学公式
- tensorflow安装2022/3/12
热门文章
- [230513] TPO72 | 2022年托福阅读真题第1/36篇 | 10:45
- 五分钟制作sql注入靶场
- 【Html + Js + CSS——电流壁纸(源码+特效)】
- 猴子摘桃:猴子摘了x个桃,每天吃一半,最多吃一个,第7天吃的时候剩下一个了,猴子摘了多少桃子?(代码+分析)
- sublime text 3开启vi编辑模式
- (一)Win10安装MindSpore平台
- Exchange_2016在OWA登录页面添加密码修改功能
- 知到网课答案|大学生劳动就业法律问题解读题库
- 听云监控.NET Core的配置误区
- java开发微信如何维护登录状态_微信小程序中做用户登录与登录态维护的实现详解...