Spring Boot文件上传与下载

来源:互联网 发布:美国数据安全管理规定 编辑:程序博客网 时间:2024/06/16 22:47

Spring Boot文件上传与下载

1.文件上传

@Controllerpublic class FileUploadController {    /**     * 单文件上传     *      * @param request     * @param multipartHttpServletRequest     * @return     */    @RequestMapping(path = { "file" }, method = { RequestMethod.POST })    @ResponseBody    public String fileUpload(HttpServletRequest request, MultipartHttpServletRequest multipartHttpServletRequest) {        MultipartFile file = multipartHttpServletRequest.getFile("file");        String originalFilename = file.getOriginalFilename();        System.out.println("上传文件的原文件名为 : " + originalFilename);        String[] split = originalFilename.split("\\.");        String fileType = split.length > 1 ? split[split.length - 1] : null;        System.out.println("文件类型为 : " + split[split.length - 1]);        String fileName = UniqueUtil.generate();        String name = null;        if (null == fileType || "".equals(fileType)) {            // 无文件类型            name = "D:\\workspace\\SpringBootDemo\\" + fileName;        } else {            name = "D:\\workspace\\SpringBootDemo\\" + fileName + "." + fileType;        }        FileOutputStream out = null;        FileInputStream in = null;        try {            out = new FileOutputStream(name);            in = (FileInputStream) file.getInputStream();            byte[] buffers = new byte[1024];            while (in.read(buffers) != -1) {                out.write(buffers);            }        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            try {                in.close();                out.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return "上传成功!";    }    /**     * 多文件上传     *      * @param multipartHttpServletRequest     * @return     */    @RequestMapping(path = { "multiFile" }, method = { RequestMethod.POST })    @ResponseBody    public String multiFile(MultipartHttpServletRequest multipartHttpServletRequest) {        Iterator<String> fileNames = multipartHttpServletRequest.getFileNames();        while (fileNames.hasNext()) {            List<MultipartFile> files = multipartHttpServletRequest.getFiles(fileNames.next());            Iterator<MultipartFile> iterator = files.iterator();            while (iterator.hasNext()) {                String saveFile = saveFile(iterator.next());                System.out.println("上传文件成功 : " + saveFile);            }        }        return null;    }    private String saveFile(MultipartFile file) {        String originalFilename = file.getOriginalFilename();        System.out.println("上传文件的原文件名为 : " + originalFilename);        String[] split = originalFilename.split("\\.");        String fileType = split.length > 1 ? split[split.length - 1] : null;        System.out.println("文件类型为 : " + split[split.length - 1]);        String fileName = UniqueUtil.generate();        String name = null;        if (null == fileType || "".equals(fileType)) {            // 无文件类型            name = "D:\\workspace\\SpringBootDemo\\" + fileName;        } else {            name = "D:\\workspace\\SpringBootDemo\\" + fileName + "." + fileType;        }        FileOutputStream out = null;        FileInputStream in = null;        try {            out = new FileOutputStream(name);            in = (FileInputStream) file.getInputStream();            byte[] buffers = new byte[1024];            while (in.read(buffers) != -1) {                out.write(buffers);            }            return fileName + fileType;        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            try {                in.close();                out.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return null;    }}

2.文件下载

@Controllerpublic class FileController {    @RequestMapping(path = { "download" }, method = { RequestMethod.GET })    public void download(String fileName, HttpServletResponse response) {        response.setHeader("content-type", "application/octet-stream");        response.setContentType("application/octet-stream");        response.setHeader("Content-Disposition", "attachment;filename=" + fileName);        byte[] buffers = new byte[1024];        BufferedInputStream in = null;        OutputStream out = null;        try {            out = response.getOutputStream();            in = new BufferedInputStream(new FileInputStream("D:\\workspace\\SpringBootDemo\\" + fileName));            while (in.read(buffers) != -1) {                out.write(buffers);            }        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                in.close();                out.close();            } catch (Exception e2) {                // TODO: handle exception            }        }    }}
原创粉丝点击