文件以字节数组存在数据库中,下载的时候从服务器端下载到本地:
@RequestMapping("/xxx.action")
public ModelAndView doDownLoadAttachment(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mav = new ModelAndView("ajaxText");
String fileName = request.getParameter("fileName");
String riskId = request.getParameter("riskId");
String arkUser=request.getParameter("arkUser");
byte[] fileAttachment = riskRelationDao.getOne(riskId,
Constants4BizType.RELATION_FILE_ATTACHMENT_BUNINESS_TPYE,
fileName).getAttachment();
// String absFileName=System.getProperty("user.home")+"\\"+fileName;
if(fileAttachment==null){
mav.addObject("responseText","文件中含有特殊字符,获取文件失败!请删除后重新上传");
return mav;
}
boolean retBoolean = DownLoadUtil.downloadFile(fileAttachment,
response, fileName, arkUser);
if (!retBoolean) {
mav.addObject("responseText", "文件流读取异常,下载失败!");
}
return mav;
}
其中,ajaxText.vm 在web-inf下面的velocity或者views目录下面,如果文件目录嵌入更深,比如子在web-inf/velocity/item/ajaxText.vm 目录下面,则是:
ModelAndView mav = new ModelAndView("item/casedetails");
public class DownLoadUtil {
public static boolean downloadFile(byte[] fileAttachment,
HttpServletResponse response, String fileName, String arkUser) {
response.reset();
/*
* String fileType=fileName.substring(fileName.lastIndexOf("."));
* if((".pdf").equals(fileType)){
* response.setContentType("application/pdf;charset=GBK"); }else
* if((".xls").equals(fileType)||(".xlsx").equals(fileType)){
* response.setContentType("application/vnd.ms-excel;charset=GBK");
* }else if((".doc").equals(fileType)||("docx").equals(fileType)){
* response.setContentType("application/msword;charset=GBK"); }else
* if((".jpg").equals(fileType)||("jpeg").equals(fileType)){
* response.setContentType("image/jpeg"); }else
* if(".gif".equals(fileType)){ response.setContentType("image/gif");
* }else if(".png".equals(fileType)){ // image/png
* response.setContentType("application/x-png"); }else
* if(".bmp".equals(fileType)){
* response.setContentType("application/x-bmp"); }
*/
// "x-msdownload"不区分文件格式,统一下载为文件格式,具体的打开编辑器windows会根据文件后缀进行选择,charset='UTF-8'可选项
response.setContentType("application/x-msdownload;charset='UTF-8'");
// response.setCharacterEncoding("gbk");
try {
// html页面不能把utf解析出的"+"号进行转码,也就是不识别+号,所以要进行转码
response.setHeader(
"Content-Disposition",
"attachment;filename="
+ URLEncoder.encode(
("riskm_" + arkUser + "_" + fileName),
"UTF-8").replaceAll("\\+", "%20"));
} catch (Exception e) {
e.printStackTrace();
}
OutputStream out = null;
try {
out = response.getOutputStream();
out.write(fileAttachment);
out.flush();
response.flushBuffer();
} catch (IOException e) {
response.reset();
e.printStackTrace();
return false;
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return true;
}
下载页面嵌入一个下载的js组件Downloadr,
<td colspan="3" style="padding: 8px">
#foreach($fileName in $fileAttachmentsName)
<span style="color: green;">$!{fileName}
#if("$!{fileName}"!="")
<a href="/xxx.action?fileName=$!{fileName}&riskId=$!{riskId}&arkUser=$!{arkUser}"
rel="downloadr"
title="Downloadr">下载</a>
#end
</span>
<br><br>
#end
</td>
组件所在的文件夹放在工程的src/main/webapp/source/js 文件夹下,需要具体的组件和邮件给我哦~
<link href="../source/css/download/facebox.css" media="screen" rel="stylesheet" type="text/css"/>
<script src="../source/js/download/facebox.js" type="text/javascript"></script>
<link href="../source/css/download/downloadr.css" media="screen" rel="stylesheet" type="text/css"/>
<script src="../source/js/download/jqbrowser.js" type="text/javascript"></script>
<script src="../source/js/download/downloadr.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('a[rel*=downloadr]').downloadr();
});
</script>
分享到:
相关推荐
用C#语言从服务器下载文件。 用C#语言从服务器下载文件。
android客户端从服务器下载文件,客户端和服务器端的代码都有
android从服务器下载文件,存到sd卡,图片为例。
java从服务器下载文件的示例 使用URLConnection类来实现从服务器下载文件的功能。一个简单的示例代码,展示了如何使用URLConnection从服务器下载文件
代码中有向服务器上传文件,和从服务器上下载文件的源代码。已测试过,可以直接运行的!
UWP,Win10,服务器下载,
android从java web客户端下载apk,MP3等文件,并显示下载进度条,下载后点击安装。
【ASP.NET编程知识】ASP.NET实现从服务器下载文件问题处理.docx
java ftp从服务器下载文件demo.........................
C语言编写,http请求,上传文件到指定服务器,下载服务器文件,指网络图片地址,下载网络图片实例,里面含有软件和操作说明,不明白可以私信我,看到我会回复的。
实现文件列表从指定IP服务器上下载实现文件列表从指定IP服务器上下载
从指定服务器上利用多线程下载网上的文件到本地指定的文件夹下.
java 从ftp服务器下载文件!方便快捷,哈哈!
Qt与Http服务器通讯下载并保存文件,带有进度条,输入网址,下载指定地址处的文件
从FTP下载文件,有完整的考虑各种问题,可以参考使用
服务器下载文件方式,支持文件流方式下载,WriteFile分片方式下载
下载服务器文件到本地,并删除已下载的服务器文件
从HTTP服务器下载文件
java上传文件到linux服务器,操作linux服务器上文件,下载linux服务器文件,删除linux服务器文件。ganymed-ssh2远程操作服务器文件
c#从ftp服务器上下载文件 丢给浏览器响应