Spring MVC实现文件上传下载

来源:互联网 发布:又见白娘娘淘宝可信吗 编辑:程序博客网 时间:2024/05/16 05:16



/**

     * 文件上传
     * @param upload文件上传名
     * @param request
     * @param fileString 上传的路径
     * @param defaultName 文件名,当form表单上传图片为空,未选择上传文件时时     *     作为数据库图片默认值
     * @return返回文件名,方便直接存数据库里
     */
    public String uploadGoods(MultipartFile upload, HttpServletRequest request, String fileString, String defaultName) {
        // 存取文件的地址
        
        String path = request.getSession().getServletContext()
                .getRealPath(fileString);
        // 拿到文件后缀格式
        String fileName = upload.getOriginalFilename();
        //如果上传文件为空,上传名为它以前的名字
        if (!(fileName!=null && fileName!="" )) {
            return defaultName;
        }
        int index = fileName.lastIndexOf('.');
        String lastName = fileName.substring(index);
        // 获取一个随机数
        Random random = new Random();
        int randomName = random.nextInt(Integer.MAX_VALUE);
        String lastFileName = randomName + lastName;
        try {
            upload.transferTo(new File(path + "/" + lastFileName));
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String imgName = lastFileName;
        return imgName;

    }


//实现文件的下载
    //需要说明的是文件的上传和下载不需要其他配置
    @RequestMapping("/testResponseEntity")
    public ResponseEntity<byte[]> testResponseEntity(HttpSession session,HttpServletRequest request) throws IOException{
        System.out.println("进入文件下载");
        String path = request.getSession().getServletContext().getRealPath("/myupload");
        byte[] body=null;
        ServletContext servletContext=session.getServletContext();
        ///files/abc.txt:所要下载文件的地址
       // InputStream in=servletContext.getResourceAsStream(path+"/regist.jpg");
        File file = new File(path,"regist.jpg");
        FileInputStream fis = new FileInputStream(file);
        body=new byte[fis.available()];
        fis.read(body);
        
        HttpHeaders headers=new HttpHeaders();
        //响应头的名字和响应头的值
        headers.add("Content-Disposition", "attachment;filename=regist.jpg");
        
        HttpStatus statusCode=HttpStatus.OK;
        
        ResponseEntity<byte[]> response=new ResponseEntity<byte[]>(body, headers, statusCode);
       //关流
        fis.close();
        
        return response;
    }

记得要导两个jar包

1 0
原创粉丝点击