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

    注意:代码的编写是在建立Marven工程的基础上编写的

    比较简单,直接上代码:

    单文件上传的服务端的代码:

    @RequestMapping(value = "/testUploadFile", method = RequestMethod.POST)
      public void testUploadFile(HttpServletRequest req,
          MultipartHttpServletRequest multiReq) {
        // 获取上传文件的路径
        String uploadFilePath = multiReq.getFile("file1").getOriginalFilename();
        System.out.println("uploadFlePath:" + uploadFilePath);
        // 截取上传文件的文件名
        String uploadFileName = uploadFilePath.substring(
            uploadFilePath.lastIndexOf('\') + 1, uploadFilePath.indexOf('.'));
        System.out.println("multiReq.getFile()" + uploadFileName);
        // 截取上传文件的后缀
        String uploadFileSuffix = uploadFilePath.substring(
            uploadFilePath.indexOf('.') + 1, uploadFilePath.length());
        System.out.println("uploadFileSuffix:" + uploadFileSuffix);
        FileOutputStream fos = null;
        FileInputStream fis = null;
        try {
          fis = (FileInputStream) multiReq.getFile("file1").getInputStream();
          fos = new FileOutputStream(new File(".//uploadFiles//" + uploadFileName
              + ".")
              + uploadFileSuffix);
          byte[] temp = new byte[1024];
          int i = fis.read(temp);
          while (i != -1){
            fos.write(temp,0,temp.length);
            fos.flush();
            i = fis.read(temp);
          }
        } catch (IOException e) {
          e.printStackTrace();
        } finally {
          if (fis != null) {
            try {
              fis.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
          }
          if (fos != null) {
            try {
              fos.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
          }
        }
      }

    多文件上传服务端的代码:

    @RequestMapping(value = "testUploadFiles", method = RequestMethod.POST)
      @ResponseBody
      public void 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);
          if (!file.isEmpty()) {
            try {
              String uploadFilePath = file.getOriginalFilename();
              System.out.println("uploadFlePath:" + uploadFilePath);
              // 截取上传文件的文件名
              String uploadFileName = uploadFilePath
                  .substring(uploadFilePath.lastIndexOf('\') + 1,
                      uploadFilePath.indexOf('.'));
              System.out.println("multiReq.getFile()" + uploadFileName);
              // 截取上传文件的后缀
              String uploadFileSuffix = uploadFilePath.substring(
                  uploadFilePath.indexOf('.') + 1, uploadFilePath.length());
              System.out.println("uploadFileSuffix:" + uploadFileSuffix);
              stream = new BufferedOutputStream(new FileOutputStream(new File(
                  ".//uploadFiles//" + uploadFileName + "." + uploadFileSuffix)));
              byte[] bytes = file.getBytes();
              stream.write(bytes,0,bytes.length);
            } catch (Exception e) {
              e.printStackTrace();
            } finally {
              try {
                if (stream != null) {
                  stream.close();
                }
              } catch (IOException e) {
                e.printStackTrace();
              }
            }
          } else {
            System.out.println("上传文件为空");
          }
        }
        System.out.println("文件接受成功了");
      }

    下载文件服务端的代码:

     @RequestMapping(value = "/testDownload", method = RequestMethod.GET)
      public void testDownload(HttpServletResponse res) {
        String fileName = "upload.jpg";
        res.setHeader("content-type", "application/octet-stream");
        res.setContentType("application/octet-stream");
        res.setHeader("Content-Disposition", "attachment;filename=" + fileName);
        byte[] buff = new byte[1024];
        BufferedInputStream bis = null;
        OutputStream os = null;
        try {
          os = res.getOutputStream();
          bis = new BufferedInputStream(new FileInputStream(new File("d://"
              + fileName)));
          int i = bis.read(buff);
          while (i != -1) {
            os.write(buff, 0, buff.length);
            os.flush();
            i = bis.read(buff);
          }
        } catch (IOException e) {
          e.printStackTrace();
        } finally {
          if (bis != null) {
            try {
              bis.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
          }
        }
        System.out.println("success");
      }
    }

    浏览器端的界面代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="http://localhost:8080/testUploadFile" method="POST" enctype="multipart/form-data">
        <p>单文件上传:</><br/>
        <input type="file" name="file1"/>
        <input type="submit" value = "上传"/>
    </form>
    <form method="POST" enctype="multipart/form-data" 
        action="http://localhost:8080/testUploadFiles">
        <p>多文件上传:</>
        <p>文件1:<input type="file" name="file" /></p>
        <p>文件2:<input type="file" name="file" /></p>
        <p><input type="submit" value="上传" /></p>
    </form>
    <a href="http://localhost:8080/testDownload">下载</a>
    </body>
    </html>
  • 相关阅读:
    python高阶函数filter
    python的生成器与yield
    python返回多个参数
    第一冲刺阶段工作总结09
    第一冲刺阶段工作总结08
    第一冲刺阶段工作总结07
    第一冲刺阶段工作总结06
    第八周学习进度表
    微软拼音简捷关于人机交互设计的相关评价
    第一冲刺阶段工作总结05
  • 原文地址:https://www.cnblogs.com/studyCenter/p/6665171.html
Copyright © 2011-2022 走看看