文件上传和下载

1.文件上传

1.1 pom.xml

<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.2</version>
</dependency>
<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.5</version>
</dependency>

1.2.springmvc.xml

<!--    文件上传-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="UTF-8"></property>
    <property name="maxUploadSize">
        <value>104857600</value>
    </property>
    <property name="maxInMemorySize">
        <value>4096</value>
    </property>
</bean>

1.3.controller层

@RequestMapping("upload")
public String uploadFile(HttpServletRequest request){
    MultipartHttpServletRequest mhs=(MultipartHttpServletRequest) request;
    MultipartFile mf=mhs.getFile("file");
    try{
        if(mf != null && mf.getSize() > 0){
            //获取项目绝对路径
            String basePath=request.getSession().getServletContext().getRealPath("/");
            File upload = new File(basePath + "/upload");
            if(!upload.exists()){
                //文件夹不存在
                upload.mkdir();
            }
            //设置文件名称(系统当前时间毫秒数命名文件)
            String fileName=System.currentTimeMillis() +
                    mf.getOriginalFilename().substring(mf.getOriginalFilename().lastIndexOf("."));
            //文件拷贝
            mf.transferTo(new File(upload,fileName));
            request.setAttribute("msg","success upload");
        }
    }catch (Exception e){
        e.printStackTrace();
        request.setAttribute("msg","failure upload");
    }

    return "result";
}
public void file(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws  Exception{
    String fileName = file.getOriginalFilename();
    File desFile = new File(request.getServletContext().getRealPath("/"),fileName);
    file.transferTo(desFile);
    response.getWriter().print(desFile.getAbsolutePath());
}

1.4.file.jsp

<form action="fileUp" method="post" enctype="multipart/form-data">
    <input type="file" name="file"> <br>
    <button type="submit"> submit </button>
</form>

2.文件下载

2.1 cobtroller

@RequestMapping("/fileDown")
public void file(HttpServletRequest request, HttpServletResponse response) throws Exception{
//        String fileName = request.getParameter("fileName");
    File file = new File(request.getServletContext().getRealPath("/"), "lwx.docx");
    byte[] data = FileUtils.readFileToByteArray(file);
    response.setContentType("application/x-msdownload;");
    response.setHeader("Content-disposition", "attachment;filename="
            + new String(file.getName().getBytes(StandardCharsets.UTF_8), "ISO8859-1"));
    response.setHeader("Content-Length", String.valueOf(file.length()));
    response.getOutputStream().write(data);
}
posted @ 2022-10-15 19:42  lwx_R  阅读(31)  评论(0)    收藏  举报