zoukankan      html  css  js  c++  java
  • 文件上传下载

    单文件上传

    <form action="/layui/upload" method="POST" enctype="multipart/form-data">
        文件:<input type="file" name="file"/>
        <input type="submit"/>
    </form>
      @PostMapping(value = "upload")
        @ResponseBody
        public Map upload(@RequestParam("file") MultipartFile file) {
            Map map=new HashMap();
            try {
                if (file.isEmpty()) {
                    map.put("msg","文件为空");
                    return map;
                }
                // 获取文件名
                String fileName = file.getOriginalFilename();
                log.info("上传的文件名为:" + fileName);
                // 获取文件的后缀名
                String suffixName = fileName.substring(fileName.lastIndexOf("."));
                log.info("文件的后缀名为:" + suffixName);
                // 设置文件存储路径
                String filePath = "D:/测试文件上传下载功能/";
                String path = filePath + fileName;
                File dest = new File(path);
                // 检测是否存在目录
                if (!dest.getParentFile().exists()) {
                    dest.getParentFile().mkdirs();// 新建文件夹
                }
                file.transferTo(dest);// 文件写入
                map.put("msg","上传成功");
                return map;
            }
            catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            map.put("msg","上传失败");
            return map;
        }
    View Code

     多文件上传

    <p>多文件上传</p>
    <form method="POST" enctype="multipart/form-data" action="/layui/batch">
        <p>文件1:<input type="file" name="file"/></p>
        <p>文件2:<input type="file" name="file"/></p>
        <p><input type="submit" value="上传"/></p>
    </form>
     @PostMapping("batch")
        @ResponseBody
        public String handleFileUpload(HttpServletRequest request) {
            List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");
            MultipartFile file = null;
            BufferedOutputStream stream = null;
            for (int i = 0; i < files.size(); ++i) {
                file = files.get(i);
                String filePath = "D:/测试文件上传下载功能/";
                if (!file.isEmpty()) {
                    try {
                        byte[] bytes = file.getBytes();
                        stream = new BufferedOutputStream(new FileOutputStream(
                                new File(filePath + file.getOriginalFilename())));//设置文件路径及名字
                        stream.write(bytes);// 写入
                        stream.close();
                    } catch (Exception e) {
                        stream = null;
                        return "第 " + i + " 个文件上传失败 ==> "
                                + e.getMessage();
                    }
                } else {
                    return "第 " + i
                            + " 个文件上传失败因为文件为空";
                }
            }
            return "上传成功";
        }
    View Code

    文件下载

    <p>文件下载</p>
    <a href="/layui/download">下载文件</a>
     @GetMapping("download")
        @ResponseBody
        public String downloadFile(HttpServletRequest request, HttpServletResponse response) {
            String fileName = "交接内容.xlsx";// 文件名
            if (fileName != null) {
                //设置文件路径
                File file = new File("C:/Users/fanyx/Desktop/交接内容.xlsx");
                //File file = new File(realPath , fileName);
                if (file.exists()) {
    
                    byte[] buffer = new byte[1024];
                    FileInputStream fis = null;
                    BufferedInputStream bis = null;
                    try {
                        response.setContentType("application/force-download");// 设置强制下载不打开
                        response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"ISO8859-1"));// 设置文件名
                        fis = new FileInputStream(file);
                        bis = new BufferedInputStream(fis);
                        OutputStream os = response.getOutputStream();
                        int i = bis.read(buffer);
                        while (i != -1) {
                            os.write(buffer, 0, i);
                            i = bis.read(buffer);
                        }
                        return "下载成功";
                    } catch (Exception e) {
                        e.printStackTrace();
                    } finally {
                        if (bis != null) {
                            try {
                                bis.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                        if (fis != null) {
                            try {
                                fis.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
            return "下载失败";
        }
    View Code

  • 相关阅读:
    git配置公钥,私钥
    vscode之vue文件代码格式化代码无效解决办法
    [python 并行3]进程
    [spring 并行6]分布式
    [spring 并行5]GPU
    [python 并行2]线程
    [spring 并行4]异步
    [python 并行1]简介
    [flask] flask api + vue 跨域问题
    [spring学习4] MVC
  • 原文地址:https://www.cnblogs.com/fanyixiang/p/11751727.html
Copyright © 2011-2022 走看看