Java是一门面标的目的对象编程说话,不仅接收了C++说话的各类长处,还摒弃了C++里难以理解的多担当、指针等概念,是以Java说话具有功能壮大和简单易用两个特征。Java说话作为静态面标的目的对象编程说话的代表,极好地实现了面标的目的对象理论,许可程序员以优雅的思维体例进行复杂的编程 。
Java具有简单性、面标的目的对象、分布式、健壮性、平安性、平台自力与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
第一步:思绪。
1、首先我们要理解上传文件的步调,上传文件时为例避免文件重名,一般城市生当作一个UUID或者时候戳作为文件名,然后将文件真实的名字和存储的名字放在数据库表中的一笔记录中。
2、下载和在前台展示的到时辰查询数据库的记实。
2.1:展示前台的是原始名称
2.2:下载时按照UUID名字进行查找。
3、借助于springMVC实现下载上传。
第二步:下载代码实现。
代码本家儿要本家儿要包罗
1、前台页面跳转,并查询数据库原始文件名展示
2、下载,按照数据库id查询文件存放路径下载
@Controller@RequestMapping("/downloadImg")public class DownloadController { @RequestMapping("toIndex") public ModelAndView toIndex(HttpServletRequest request, HttpServletResponse response){ //想数据库请求查询获得原始文件名展示 ModelAndView mv = new ModelAndView("index"); mv.addObject("name","火影"); return mv; } @ResponseBody @RequestMapping("/download") public void testUrl(HttpServletRequest request) throws UnsupportedEncodingException { //获取请求的url StringBuffer url = request.getRequestURL(); //获取url后面的参数 String urlParame = request.getQueryString();; System.out.println("url:"+ url); System.out.println("urlParame:"+ urlParame); //按照参数名称获取参数 String name = request.getParameter("name"); System.out.println("name:"+ new String(name.getBytes("ISO-8859-1"),"utf-8")); } public ResponseEntity<byte[]> download(HttpServletRequest request) throws IOException { //读取文件 File file = new File("D:/img/火影2.jpg"); byte[] body = null; InputStream is = new FileInputStream(file); body = new byte[is.available()]; is.read(body); HttpHeaders headers = new HttpHeaders(); //设置文件头 headers.add("Content-Disposition", "attchement;filename=" + new String( "火影2.jpg".getBytes("gb2312"), "ISO8859-1" )); HttpStatus statusCode = HttpStatus.OK; ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(body, headers, statusCode); return entity; }}
第三步:测试。
1、打开跳转页面。
2、下载请求,如下所示下载当作功
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!