模板下载
来源:互联网 发布:淘宝货源公司 编辑:程序博客网 时间:2024/04/24 04:27
需求:模板上传及下载
模板下载jsp代码如下:
<div id="select_condition"><div class="select_condition_row" name="form1" > 数据类型:<select style="width:110px;" id="select_con"><option value="1000" onclick="selectBusinessHall()" >营业厅</option><option value="1002" onclick="selectVillageMessage()">4G参数</option><option value="1003" onclick="selectBasestationInforplan()">基站信息规划</option><option value="1001" onclick="showMr()">MR数据配置</option></select><span id="datePage" style="right:10px;position:absolute;"></span></div><div class="select_condition_row select_button" id="exim"><span><a onclick="improtExample()">模板上传</a></span><span><a onclick="DownloadExample()">模板下载</a></span><span><a onclick="imports()">导入</a></span></div><input type="file" id="file" name="" onchange="fileChange(this)" style="FILTER: alpha(opacity=0); moz-opacity: 0; opacity: 0;" /><input type="file" id="uploadifys" name="myfiles" multiple="multiple" onchange="fileChanges(this)" style="FILTER: alpha(opacity=0); moz-opacity: 0; opacity: 0;" /></div><!-- 显示下载页面--》<div id="showDiv" style='opacity:0.5; z-index: 100; position: fixed;width: 100%;height: 100%;background-color:#bebaba; display:none;'></div> <div id="checkDiv" style='z-index: 100; position: fixed; position: absolute;left: 32%;top: 10%;'> <div id="p" class="easyui-panel" style="width:525px; height: 452px; background: #fafafa;" title="模板下载" closable="true"> <div class="select_condition_row1 select_button2"> <span ><a onclick="downMessage()">模板下载</a></span> </div> <div class="checkContent"> </div> </div> </div>
js代码如下:
/** * 模板上传,及下载 */function improtExample(){var ie = !-[1,]; if(ie){ $("#uploadifys").trigger('click').trigger('change'); }else{ $("#uploadifys").trigger('click'); } }/** * 模板下载 */function DownloadExample(){$("#showDiv").show(); $("#checkDiv >.panel").show();$.ajax({ type:'post', url:path+'/SystemSiteController/listFile.do', dataType:'json', async: true,success:function(result){var jso = result.fileNameMapvar htmls = "<table class='reason' style='width: 100%;'>";$.each(jso, function(i,val){htmls = htmls + "<tr><td ><label style='padding-left: 9px;'><input name='Fruit' type='checkbox' value='"+val+"' />"+val+" </label</td></tr>"});htmls = htmls + "</table>"$(".checkContent").html(htmls);}});}/** * 模板下载上传下载目录 */function downMessage(){text = $("input:checkbox[name='Fruit']:checked").map(function(index,elem) {return $(elem).val();}).get().join(',');window.location.href = path+'/SystemSiteController/downListFile.do?fileName='+text;}/** * 模板下载显示下载目录 * @param cellName */function checkOrder(objectid, cellName){$.ajax({ type:'post', url:path+'/SystemSetting/listFile.do', dataType:'json', async: true,success:function(result){}});}
controller的代码如下:
/** * 列出模板下载需要下载的文件 * @param request * @param response * @return */@RequestMapping("listFile")public ModelAndView listFile(HttpServletRequest request,HttpServletResponse response){//获取上传文件的目录//String uploadFilePath = (request.getSession().getServletContext().getRealPath("")).replace("\\", "/") +"systemPage";String uploadFilePath = request.getSession().getServletContext().getRealPath("/systemPage");//存储要下载的文件名Map<String,String> fileNameMap = new HashMap<String,String>();//递归遍历filepath目录下的所有文件和目录,将文件的文件名存储到map集合中(new DownLoadFile()).listfile(new File(uploadFilePath),fileNameMap);//File既可以代表一个文件也可以代表一个目录Map<String,Object> attributes = new HashMap<String,Object>();attributes.put("fileNameMap", fileNameMap);MappingJackson2JsonView view = new MappingJackson2JsonView();view.setAttributesMap(attributes);ModelAndView model = new ModelAndView();model.setView(view);return model;}/** * 模板下载 * @param request * @param response * @throws UnsupportedEncodingException */@RequestMapping("downListFile")public static void downListFile(HttpServletRequest request, HttpServletResponse response)throws Exception {String fileName = request.getParameter("fileName");String[] fileNames = fileName.split(",");//文件的目录String uploadFilePath = request.getSession().getServletContext().getRealPath("/systemPage");//这个集合就是你想要打包的所有文件List<File> files = new ArrayList<File>();for (int i = 0; i < fileNames.length; i++) {String path = uploadFilePath +"/"+fileNames[i];File ff = new File(path);files.add(ff);}try {//创建一个临时压缩文件, 我们会把文件流全部注入到这个文件中 ,这里的文件你可以自定义是.rar还是.zipFile file = new File("c:/DataTemplate.rar");if (!file.exists()){ file.createNewFile(); }response.reset();//response.getWriter()//创建文件输出流FileOutputStream fous = new FileOutputStream(file); //打包的方法我们会用到ZipOutputStream这样一个输出流,所以这里我们把输出流转换一下ZipOutputStream zipOut = new ZipOutputStream(fous,StandardCharsets.UTF_8);//这个方法接受的就是一个所要打包文件的集合,还有一个ZipOutputStream(new DownLoadFile()).zipFile(files, zipOut);zipOut.close();fous.close();(new DownLoadFile()).downloadZip(file,response);}catch (Exception e) { e.printStackTrace();}}
package com.sls.framework.util;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URLEncoder;import java.util.List;import java.util.Map;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;import javax.servlet.http.HttpServletResponse;/** * @version 创建时间:2016年4月27日 下午4:45:23 * 文件下载帮助类*/public class DownLoadFile {/** * 遍历文件夹里的所有文件夹名 * @param file * @param map */public void listfile(File file,Map<String,String> map){//如果file代表的不是一个文件,而是一个目录if(!file.isFile()){//列出该目录下的所有文件和目录File files[] = file.listFiles();//遍历files[]数组for(File f : files){//递归listfile(f,map);}}else{/*** 处理文件名,上传后的文件是以uuid_文件名的形式去重新命名的,去除文件名的uuid_部分file.getName().indexOf("_")检索字符串中第一次出现"_"字符的位置,如果文件名类似于:9349249849-88343-8344_阿_凡_达.avi那么file.getName().substring(file.getName().indexOf("_")+1)处理之后就可以得到阿_凡_达.avi部分*/String realName = file.getName().substring(file.getName().indexOf("_")+1);//file.getName()得到的是文件的原始名称,这个名称是唯一的,因此可以作为key,realName是处理过后的名称,有可能会重复map.put(file.getName(), realName); }}/** * 把接受的全部文件打成压缩包 * @param List<File>; * @param org.apache.tools.zip.ZipOutputStream */public static void zipFile(List files,ZipOutputStream outputStream) { int size = files.size(); for(int i = 0; i < size; i++) { File file = (File) files.get(i); zipFile(file, outputStream); }}/** * 根据输入的文件与输出流对文件进行打包 * @param File * @param org.apache.tools.zip.ZipOutputStream */public static void zipFile(File inputFile,ZipOutputStream ouputStream) { try { if(inputFile.exists()) { //如果是目录的话这里是不采取操作的,至于目录的打包正在研究中 if (inputFile.isFile()) { FileInputStream IN = new FileInputStream(inputFile); BufferedInputStream bins = new BufferedInputStream(IN, 512); //org.apache.tools.zip.ZipEntry ZipEntry entry = new ZipEntry(inputFile.getName()); ouputStream.putNextEntry(entry); // 向压缩文件中输出数据 int nNumber; byte[] buffer = new byte[512]; while ((nNumber = bins.read(buffer)) != -1) { ouputStream.write(buffer, 0, nNumber); } // 关闭创建的流对象 bins.close(); IN.close(); } else { try { File[] files = inputFile.listFiles(); for (int i = 0; i < files.length; i++) { zipFile(files[i], ouputStream); } } catch (Exception e) { e.printStackTrace(); } } } } catch (Exception e) { e.printStackTrace(); }}/** * 已流的=下载 * @param file * @param response */ public static void downloadZip(File file,HttpServletResponse response) { try { // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(file.getPath())); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response response.reset(); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); //如果输出的是中文名的文件,在此处就要用URLEncoder.encode方法进行处理 response.setHeader("Content-Disposition", "attachment;filename=" +URLEncoder.encode(file.getName(), "UTF-8")); toClient.write(buffer); toClient.flush(); toClient.close(); } catch (IOException ex) { ex.printStackTrace(); }finally{try {// File f = new File(file.getPath());// f.delete(); } catch (Exception e) { e.printStackTrace(); } } }}
2 0
- 模板下载
- 模板下载站点
- TemplateWorld-网页模板下载
- jise及模板下载
- CSS模板下载
- 网店模板下载
- 网站模板下载
- 下载excel模板
- 模板下载网站收集
- 网站模板下载
- excel 下载模板
- 下载导入数据模板
- 动态下载Excel模板
- POI下载模板功能
- Python2 简单下载模板
- 下载excel模板
- pos签购单模板下载
- docker 导入下载模板
- 二元运算符重载
- 20140429Ubuntu系统上的mysql中文乱码
- java中创建对象分配内存的问题
- mysql
- JDK 源码解析 —— ArrayBlockingQueue
- 模板下载
- mysql
- python的内置方法
- 多目标实时跟踪程序
- IOS邓白氏码申请
- googleHacking基础
- POJ 1679:The Unique MST 次小生成树
- Linux之awk
- Oracle基础 --常用SQL语句