文件上传

//简单文件上传页面index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>文件上传</title>
  </head>
  <body>
    <form action="${pageContext.request.contextPath}/upload" enctype="multipart/form-data" method="post">
      <input type="file" name="file">
      <input type="submit" value="文件上传">
    </form>
  </body>
</html>
//文件上传代码
@RestController
public class FileController {
    //@RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象
    //批量上传CommonsMultipartFile则为数组即可
    @RequestMapping("/upload")
    public String fileUpload(@RequestParam("file")CommonsMultipartFile file, HttpServletRequest request) throws IOException {
        //获取文件名
        String uploadFileName = file.getOriginalFilename();

        //上传时可能遇到文件名中存在空格无法成功上传,将空格替换
//        uploadFileName = uploadFileName.replaceAll(" ","");
        // 使用uuid重新命名更加安全
//        String newFileName = UUID.randomUUID() + "_" + uploadFileName;

        //如果文件名为空,直接返回首页
        if("".equals(uploadFileName)){
            return "redirect:/index.jsp";
        }
        System.out.println("上传文件名:"+uploadFileName);

        //上传路径保存
        String path = request.getServletContext().getRealPath("/upload");
        //当文件数量太多 想要通过日期归类
//        Date date = new Date();
//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//        String dateName = format.format(date);
//        String filePath = path+"/"+dateName;

        //如果路径不存在,创建一个目录
        File realPath = new File(path);
        if(!realPath.exists()){
            realPath.mkdirs();
        }
        System.out.println("上传文件保存地址:"+realPath);

        //第一种方式
        //通过CommonsMultipartFile的方法直接写文件
        file.transferTo(new File(realPath+"/"+uploadFileName));

//        //第二种方式
//        //文件输入流
//        InputStream is = file.getInputStream();
//        //文件输入流
//        FileOutputStream os = new FileOutputStream(new File(newFile, uploadFileName));
//        //读取写出
//        int len = 0;
//        byte[] buffer = new byte[1024];
//        while((len = is.read(buffer))!= -1){
//            os.write(buffer,0,len);
//            os.flush();
//        }
//        os.close();
//        is.close();
        return "ok";
    }

 

文件上传

上一篇:http 请求code状态码


下一篇:.net core 系列之限流中间件IpRateLimitMiddleware