Spring MVC 文件的上传下载

来源:互联网 发布:vmware centos 双网卡 编辑:程序博客网 时间:2024/04/29 11:03
</pre><p><pre name="code" class="java">    /**     * 上传文件     * @param req 请求     * @param file 文件     * @return URL路径     */    @RequestMapping("/upload")    public String upload(HttpServletRequest req,@RequestParam("file") MultipartFile file){                //路径        String path = req.getSession().getServletContext().getRealPath("/WEB-INF/file");        //判断文件        if(!file.isEmpty()){            //上传的文件袋的名称            String oldName = file.getOriginalFilename();            //取文件名的后缀            String suffix = oldName.substring(oldName.lastIndexOf("."));            //改变文件的名称            String newName = UUID.randomUUID() + toString() + suffix;            //将更改的文件名存放在session            req.getSession().setAttribute("fileName", newName);            File f = new File(path + "/" + newName);            try {                //通过封装好的方法将文件上传到指定的文件夹                file.transferTo(f);            } catch (IllegalStateException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }        }                return "redirect:/console/year/all";    }        /**     * 下载文件     * @param fileName 文件名     * @param req 请求     * @param resp 响应     */    @RequestMapping("/downfile")    public void downFile(@RequestParam("fileName")String fileName,HttpServletRequest req, HttpServletResponse resp){        InputStream in = null;        OutputStream out = null;                //路径        String path = req.getSession().getServletContext().getRealPath("/WEB-INF/file");        //设置请求头        resp.setHeader("content-disposition", "ATTCHMENT;fileName="+fileName);         try {             //创建流            in = new FileInputStream(new File(path + "/" + fileName));            out = resp.getOutputStream();            byte [] bytes = new byte[512];            int total = 0;            //写 读多少写多少            while((total = in.read(bytes)) != -1){                out.write(bytes, 0, total);            }        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }finally{            try {                in.close();                out.close();            } catch (IOException e) {                e.printStackTrace();            }                    }    }
页面 from表单必须有enctype="multipart/form-data" 属性才能进行上传文件
<div><form action="${ctx}/console/year/upload"  method="post"  enctype="multipart/form-data" ><table><tr><td>添加附件</td><td><input type="file" name="file" id="file"/></td></tr>    <tr>    <td>    <input type="submit" value="提交"/>    </td>    </tr></table></form><table><tr><th>附件</th><td>${fileName}<a href="${ctx}/console/year/downfile?fileName=${fileName}">下载</a></td></tr></table></div>




0 0