文件下载

效果图:


html页面:在<td>里放一个id,页面默认加载的时候,加载那多个已经上传的附件

<span style="white-space:pre">	<pre name="code" class="html"><tr>
						<td><label>附件:</label></td>
						<td id="pu_files">
						
						</td>
					</tr>


数据库里的不同的附近是以逗号隔开

页面默认加载的js:

$(function () {	
		
		$("#enable").combobox("select",'${practiceUnit.isDeleted}');	
		//加载行业信息		
		loadIndustry();
		//加载城市信息
		loadCity();
		//处理福利
		var v_array=new Array();
		var value='${practiceUnit.benefits}';
		
		if(value!=null&&value!=undefined&&value!=""){
			v_array=value.split(",");
		}
		
		
		for(var i=0;i<v_array.length;i++){			
			$("#benefit_"+parseInt(v_array[i])).prop("checked",true);
		}
		
		//处理附件
		//处理附件的显示			
		var fujian="";		
		var fj_array=new Array();
		var fj_value='${practiceUnit.attachment}';
		if(fj_value!=null&&fj_value!=undefined){
			fj_array=fj_value.split(",");
		}
		if(fj_array.length>0){
			
			
			for(var i=0;i<(fj_array.length-1);i++){
				
				var arr = fj_array[i].split('/');
				var abc = arr[arr.length -1];
				fujian +='<h6>';
				fujian +="<a href='<%= request.getContextPath() %>/manage/practiceUnit/"+abc+"/download'>"+abc+"</a>  ";
				fujian +="<a href='#' onclick='deleteAttach(this,\""+abc+"\","+'${practiceUnit.id}'+")'>删除</a><br/>";	
				fujian +='</h6>';	
			}
					
		}
		fujian +='<input type="button" value="添加附件" onclick="addFile()"/>';
		
		$("#pu_files").html(fujian);
	
	     
	});
	
	//添加文件
    function addFile(){
		
    	var strFile="<h6><input name=\"myfiles\" type='file'  style='WIDTH:350px;'/>";
    	 var deleButton="<input  type='button'  value='删除' onclick=\"deleteFile(this)\"/><br/></h6>";
    	 document.getElementById("pu_files").insertAdjacentHTML("beforeEnd",strFile+deleButton);
    }  
   
	//移除添加的文件
     function deleteFile(o) {
		
       while (o.tagName != "H6"){  o = o.parentNode;}
       o.parentNode.removeChild(o);
     }
   //删除附件
 	function deleteAttach(o,fileName,rowId){
 		
 		$.post('<%= request.getContextPath() %>/manage/practiceUnit/'+fileName+'/deleteAttach/'+rowId, function(result) {
 				
 			if (result.info){
 				$.messager.show({
 					title: 'Success',
 					msg: result.info
 				});
 				//删除页面元素
 				deleteFile(o); 				
 			} else {
 				$.messager.show({
 					title: 'Error',
 					msg: result.error
 				});
 			}
 			
 			//reloadTree();
 		}, 'json');
 		
 	}
	

附件的下载,就是在文件名外嵌套a标签

后台的代码

/**
	 * 下载单个文件
	 * 
	 * @param fileName
	 * @param request
	 * @param response
	 * @return
	 * @throws IOException
	 */
	@RequestMapping(value = "/{fileName}/download")
	public String download(@PathVariable("fileName") String fileName, HttpServletRequest request,
			HttpServletResponse response) throws IOException {
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("UTF-8");
		java.io.BufferedInputStream bis = null;
		java.io.BufferedOutputStream bos = null;

		String realPath = request.getSession().getServletContext().getRealPath("/upload/files/");
		// String ctxPath =
		// request.getSession().getServletContext().getRealPath("/")+ "\\" +
		// "images\\";

		String downLoadPath = realPath + fileName;
		try {
			long fileLength = new File(downLoadPath).length();
			response.setContentType("application/x-msdownload;");
			response.setHeader("Content-disposition",
					"attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
			response.setHeader("Content-Length", String.valueOf(fileLength));
			bis = new BufferedInputStream(new FileInputStream(downLoadPath));
			bos = new BufferedOutputStream(response.getOutputStream());
			byte[] buff = new byte[2048];
			int bytesRead;
			while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
				bos.write(buff, 0, bytesRead);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (bis != null)
				bis.close();
			if (bos != null)
				bos.close();
		}
		return null;

	}

	/**
	 * 删除附件
	 * 
	 * @param fileName
	 * @param id
	 * @return
	 */
	@RequestMapping(value = "/{fileName}/deleteAttach/{id}")
	public String deleteAttach(Model model, @PathVariable("fileName") String fileName, @PathVariable("id") Long id) {
		try {
			PracticeUnit practiceUnit = practiceUnitService.getById(id);
			String attachment = practiceUnit.getAttachment();
			fileName = fileName.trim();
			String ls = attachment.replaceAll("/upload/files/" + fileName + ",", "");
			practiceUnit.setAttachment(ls);
			practiceUnitService.update(practiceUnit);
			model.addAttribute("info", "删除文件成功!");
		} catch (Exception e) {
			logger.error("删除文件失败!", e);
			model.addAttribute("error", "删除文件失败!");
		}
		return JSON;
	}


说明:

1.download 方法,fileName放在中间,是因为 比如1.png,传不过来,放在中间就能传过来了

2.deleteAttach方法,只是替换了一下文件名,将文件名置换为空字符串,之前说过,以前是按照逗号隔离开的。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值