• 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;
            }
        }
  • 相关阅读:
    HDU 1002 A + B Problem II
    HDU 2602 Bone Collector WA谁来帮忙找找错
    爬楼梯问题-最大迈两步
    2106 Problem F Shuffling Along 中石油-未提交-->已提交
    2101 Problem A Snake Filled
    2078 Problem H Secret Message 中石油-未提交-->已提交
    有关 时间 空间 以及 数据类型 的总结
    hdu 2510
    hdu 1133 卡特兰 高精度
    hdu 2067
  • 原文地址:https://www.cnblogs.com/luffyu/p/6145086.html
Copyright © 2020-2023  润新知