SpringMVC中使用 MultipartFile 进行文件上传下载及删除

一:引入必要的包

 <!--文件上传-->
    <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>

二:在spring-service中配置

<!-- 支持上传文件 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8"></property>
        <property name="maxUploadSize" value="10485760000"></property>
        <property name="maxInMemorySize" value="40960"></property>
    </bean>

三:文件上传

3.1 实现方法

  /**
     * 文件上传
     * @param file
     * @param request
     * @return
     */
    public JSONObject uploadFile(MultipartFile file, HttpServletRequest request){
        //获取文件名称
        String fileName = file.getOriginalFilename();
        //获取文件存放路径
        String path = request.getSession().getServletContext().getRealPath("").concat("/uploadFile");
       // String path = getUploadPath(fileName,request);
        //上传文件
        File targetFile = new File(path, fileName);
        if(!targetFile.exists()){
            targetFile.mkdirs();
        }
        //保存
        try {
            file.transferTo(targetFile);
        } catch (Exception e) {
            e.printStackTrace();
            return resultErrorJson(fileName);
        }
        logger.info(fileName+"文件上传成功");
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("key","true");
        jsonObject.put("name",fileName);
        jsonObject.put("path",path+"/"+fileName);
        return jsonObject;
    }

3.2 controller层

  @RequestMapping(value="/upload")
    @ResponseBody
    public JSONObject upload(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request){
        fileOperation = new FileOperation();
        //返回文件后的文件路径
        return fileOperation.uploadFile(file,request);
    }

3.3 文本递交的时候 注意提交格式

  <form action="/file/upload" method="post" enctype="multipart/form-data">
            <input type="file" name="file">
            <input type="submit" value="提交">
        </form>

 

四:文件下载

 

/**
     * 下载文件
     * @param fileName 文件模板
     * HttpServletRequest request,
     * @param response response请求
     */
    public boolean download(String fileName,  HttpServletRequest request,HttpServletResponse response) {
        try {
            response.setContentType("application/force-download");
            response.setHeader("Content-Disposition", "attachment;fileName="
                    + fileName);
            String path = request.getSession().getServletContext().getRealPath("")+"/uploadFile/"+fileName;
            File tempFile =new File(path);

            InputStream inputStream = new FileInputStream(tempFile);
            OutputStream os = response.getOutputStream();
            byte[] b = new byte[2048];
            int length;
            while ((length = inputStream.read(b)) > 0) {
                os.write(b, 0, length);
            }
            os.flush();
            os.close();
            inputStream.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println("文件下载失败");
            return false;
        }catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件下载失败");
            return false;

        }
        return true;
    }

 

 

五 删除文件

    /**
     * 通过文件绝对路径 删除单个文件
     * @param filePath
     */
    public boolean delFile(String filePath) {
        File delFile = new File(filePath);
        if(delFile.isFile() && delFile.exists()) {
            delFile.delete();
            logger.info("删除文件成功");
            return true;
        }else {
            logger.info("没有该文件,删除失败");
            return false;
        }
    }

 

posted @ 2016-12-08 15:21  草帽boy  阅读(8911)  评论(0编辑  收藏  举报