layer实现文件上传下载前后台代码

下面是开源资源下载网站,有需要一些资源可以登录查看,技术交流可以联系qq:2247862270

免费开发资源下载

近期学习layer相关知识,想做一下文件上传下载。分享下前后台代码

1、前端




    
    
    


2、后台请求

/**
     * @Description: 上传文件
     * @ClassName: RedisController
     * @author: zhoukai
     * @date: 2020年05月15日
     * @param [file, servletRequest]
     * @return: void
     */
    @RequestMapping(value = "/upload" , method = RequestMethod.POST)
    @ResponseBody
    public void upload(MultipartFile file,HttpServletRequest servletRequest)throws Exception{
        //上传文件路径,默认路径
        String path = "/home/image";
        logger.error("文件名称"+file.getOriginalFilename());
        //上传文件名
        String name = file.getOriginalFilename();//上传文件的真实名称
        String suffixName = name.substring(name.lastIndexOf("."));//获取后缀名
        String hash = String.valueOf(System.currentTimeMillis());//自定义随机数(字母+数字)作为文件名
        String fileName = name + suffixName;
        File filepath = new File(path, fileName);
        logger.error("文件名称"+file.getOriginalFilename());
        //判断路径是否存在,没有就创建一个
        if (!filepath.getParentFile().exists()) {
            filepath.getParentFile().mkdirs();
        }
        //将上传文件保存到一个目标文档中
        File tempFile = new File(path + File.separator + fileName);
        file.transferTo(tempFile);
     }

/**
     * @Description: 下载
     * @ClassName: RedisController
     * @author: zhoukai
     * @date: 2020年05月15日
     * @param [request, response]
     * @return: void
     */
    @RequestMapping(value = "/downloadFile" , method = RequestMethod.GET)
    @ResponseBody
    public void downloadFile(HttpServletRequest request, HttpServletResponse response) throws Exception {
        InputStream fis = null;
            File file = new File(path);
                    try {
                        String filename = request.getParameter("filePath");
                        filename = new String(filename.getBytes("GB2312"), "ISO_8859_1");
                        // 以流的形式下载文件。
                        fis = new BufferedInputStream(new FileInputStream(file));
                        byte bytes[] = new byte[1024];//设置缓冲区为1024个字节,即1KB
                        int len = 0;
                        // 清空response,省的影响
                        response.reset();
                        // 设置response的Header
                        response.addHeader("Content-Disposition", "attachment;filename=" + filename);
                        response.addHeader("Content-Length", "" + file.length());
                        OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
                        response.setContentType("application/octet-stream");
                        while ((len = fis.read(bytes)) != -1) {
                            toClient.write(bytes, 0, len);
                        }
                        toClient.flush();
                        toClient.close();
                    } catch (Exception e) {
                        throw new Exception(e);
                    } finally {
                        if (fis != null) {
                            try {
                                fis.close();
                            } catch (IOException e) {

                            }
                        }
                    }
            }
    }

以上就是小小案例,希望对需要的人有所帮助。

如果转载,请注明原作者,谢谢

你可能感兴趣的:(layer学习使用,html,jquery,java,spring,http)