需求:
在页面放置按钮或链接,客户点击即可下载文件
方法:
实现客户点击下载有两种方式:1,直接提供链接,该链接指到服务器对应的文件,浏览器打不开就会自动下载;2.点击提交请求至服务器,服务器响应数据流,浏览器下载。
实现:
本应用环境--spring mvc +mybatis,数据层涉及不提,主要记录业务层的实现,controller处理
@Controller("downloadController") @RequestMapping(value = "/web") public class DownloadController { @Autowired CommonsMultipartResolver resolver; @Autowired ClientProgramService cservice; /** * 跳转到下载页面 * @return */ @RequestMapping(value = "/download") public ModelAndView donwload() { ModelAndView mav = new ModelAndView("download"); return mav; } /** * 下载程序 * @param id * @param response * @return * @throws IOException */ @RequestMapping(value="/download/program/{id}") public ModelAndView downloadProgram(@PathVariable long id,HttpServletResponse response,HttpServletRequest request) throws IOException{ ClientProgram program=cservice.get(id); String path=program.getPath(); path=java.net.URLEncoder.encode(path, "utf-8"); response.sendRedirect("http://www.xxx.com/"+path); return null; } /** * 下载文档 * @param type * @param response * @param request * @return * @throws IOException */ @RequestMapping(value="/download/document") public void download(HttpServletResponse response,HttpServletRequest request) throws IOException{ String relativePath=request.getServletContext().getRealPath("/")+"upload/client/document/"; File pfile=new File(relativePath); File[] files=pfile.listFiles(); if(files!=null&&files.length>0){ String fileName=files[0].getName(); InputStream in=new FileInputStream(new File(relativePath+fileName)); OutputStream out=response.getOutputStream(); response.setContentType(request.getServletContext().getMimeType(relativePath+fileName)); response.setHeader("Content-Disposition", "attachment; filename=babydancer-directions"); IOUtils.copy(in, out); in.close(); out.close(); }else response.getWriter().write("对不起,文件暂时未上传"); } }
程序下载使用第一种方式,将客户请求跳转到服务器中指定的文件;文档的下载使用第2种方式,以子节流的形式响应请求,这时就要求设置响应类型response.setContentType和响应头response.setHeader("Content-Disposition", "attachment; filename=..."),可以自己定义输出的文件名称。(注:文件的传输,严格的做法是开辟一个byteArray,以此为单位,每次传输一个arry大小,可以避免内存不足,这里只强调实现方法)
相关推荐
Java Web实现登陆注册页面前端与后台数据连接(代码+sql文件)。Java Web实现登陆注册页面前端与后台数据连接(代码+sql文件)。Java Web实现登陆注册页面前端与后台数据连接(代码+sql文件)。
可以通过http连接将图片下载到本地,可以实现一些制定网页图片的下载
jsp页面连接mysql实现增删改查简单小例子,非常适合初学者。
php 连接mysql数据库做简单的登录页面,实现用户的登录注册功能,连接数据库需改动一下conn.php里面的链接参数
java web从入门到精通配套源代码,《Java Web从入门到精通》介绍如何整合Web框架进行J2EE开发,所有实例都基于MyEclipse IDE开发,引领读者快速进入基于JaVa web的J2EE应用领域。《Java Web从入门到精通》开始主要...
友好而美观的jsp页面实现用户注册,登录(修改数据库中中的相关数据)
java 连接数据库实现用户登录功能 能运行成功,适合初学者借鉴学习。
用软件NetBeans,JSP实现与数据库的连接,哈哈~~~···
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法 我测试过很多遍,想要通过a标签的形式来直接点击url下载文件并重命名但是都失败了,最终只能下载却不能重命名 所以 换了java后台来修改名字.以下代码 我...
实现网页端长连接功能,当服务器向web端发送消息时,web端不用刷新便可以更新信息。改功能可以用于聊天室,web端客户与管理员的交流,消息即时更新不滞留。
用的是以前模仿做的HTML淘宝网静态页面,接连上数据库加入图片和信息,实现后台与前端的连接,实现了增删改查功能美化做的不好还请大家勿喷。呜呜呜,做了很久也只能实现这样一个效果了,要是有大神希望帮帮我改改...
Java实现的FTP连接与数据浏览程序
本例子分为客户端(就是android手机),网页端为后台服务器。可以实现网页消息推送到手机,手机也可发消息到网页,很好的实现了消息的同步,不会有延迟,刷新现象。可以实现网页微信,二维码扫描登陆,聊天室等等。
django实现用户的登录注册连接后台数据库完成主页的搭建,并且附有忘记密码 验证码等功能。
ASP具有强大的数据库处理功能,Flash能够实现交互性矢量动画,将Flash与ASP相结合,实现Flash与数据库的连接。实现Web数据库的应用一般有两种方法:一种是Web服务器端提供中间件,连接Web服务器与数据库服务器;另一...