文件上传与下载

<a href="fileupload.jsp">文件上传</a><br/><body> <h2>文件上传</h2> <center> <form action="file/upload1" method="post" id="itmesForm" enctype="multipart/form-data" > <input t...
摘要由CSDN通过智能技术生成

 

     <a href="fileupload.jsp">文件上传</a><br/>
<body>
    <h2>文件上传</h2>
    <center>
        <form action="file/upload1" method="post" id="itmesForm" enctype="multipart/form-data" >
            <input type="file" name="file" /><br/>
            <input type="submit" value="提交"/><br/>
        </form>
    </center>

    <center>
            <form action="file/upload2" method="post" id="itmesForm" enctype="multipart/form-data" >
                <input type="file" name="files" multiple="multiple" /><br/>
                <input type="submit" value="提交"/><br/>
            </form>
     </center>
</body>
//    单文件上传
    @RequestMapping("/upload1")
    public String fileupload(@RequestParam(value = "file",required = false) MultipartFile file,
                             HttpServletRequest request, Model model) throws IOException {
        System.out.println("进入upload1");
//        System.out.println(file.getClass().getName());
//获取文件名
        String fileName = file.getOriginalFilename();
//        通过UUID生成随机字符串
        fileName= UUID.randomUUID().toString().substring(0,10)+fileName.substring(fileName.lastIndexOf("."),fileName.length());
//获取 服务器存放文件的 物理路径
        String path = request.getSession().getServletContext().getRealPath("upload");
        System.out.println(path);
//        通过日期生成文件夹
        Date date = new Date();
//       创建文件夹
        File target = new File(path+new SimpleDateFormat("/yyyy/MM/dd/HH/mm").format(date),fileName);
        if (!target.exists()){
//            可以同时创建多个文件夹
            target.mkdirs();
        }
//      将内容写入到 target中
        file.transferTo(target);
        return "success";
    }

 


//    多文件上传
    @RequestMapping("/upload2")
    public String fileupload2(@RequestParam(value = "files",required = false) MultipartFile[] files,
                             HttpServletRequest request, Model model) throws IOException {

        for(MultipartFile file:files){
            //获取文件名获取
            String fileName = file.getOriginalFilename();

//            通过UUID生成随机字符串
            fileName=UUID.randomUUID().toString().substring(0,10)+file.getOriginalFilename().substring(fileName.lastIndexOf('.'),fileName.length());
//获取 服务器存放文件的 物理路径
            String path = request.getSession().getServletContext().getRealPath("upload");
            Date date = new Date();
            path+=new SimpleDateFormat("/yyyy/MM/dd").format(date);
//       创建文件夹
            File target = new File(path,fileName);
            if (!target.exists()){
//            可以同时创建多个文件夹
                target.mkdirs();
            }
//      将内容写入到 target中
            file.transferTo(target);
        }

        return "success";
    }
     <a href="file/filedownload?fileName=甲.lst">文件下载</a><br/>

 

  //    二进制流文件下载

    //    文件下载
    @RequestMapping(value = "/filedownload")
    public ResponseEntity<byte[]> fileDownload(HttpServletRequest request,
                                               @RequestParam("fileName") String fileName, ModelMap modelMap) throws IOException {
        System.out.println("******");
//            文件下载路径
        String path = request.getServletContext().getRealPath("/upload/");
//        File.separator 分隔符 兼容 /   //   \  \\
        File file = new File(path+File.separator+fileName);
        设置响应头
        HttpHeaders headers = new HttpHeaders();
//        下载显示的文件名字,解决中文乱码
        String downloadFileName= new String(fileName.getBytes(),"ISO-8859-1");
//        通知浏览器 以下载方式(attachment)打开文件
        headers.setContentDispositionFormData("attachment",downloadFileName);
//        以二进制流数据的形式下载返回文件数据
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//       使用SpringMVC 框架的 ResponseEntity对象 封装返回下载数据
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值