spring mvc 文件上传下载

web.xml、applicationContext.xml配置不变。

mvc-servlet.xml添加

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
        <property name="defaultEncoding" value="utf-8"/>
        <property name="maxUploadSize" value="104857600"/>
        <property name="maxInMemorySize" value="4096"/>
</bean> 

1、上传单个文件

form表单:

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

java代码:

@RequestMapping("upload.shtml")
    public String uploadFile(HttpServletRequest request, HttpServletResponse response){
        
        MultipartHttpServletRequest mutipartHttpServletRequest = (MultipartHttpServletRequest) request;
        MultipartFile multipartFile = mutipartHttpServletRequest.getFile("file");
        String fileName = multipartFile.getOriginalFilename();
        String filePath = request.getServletContext().getRealPath(File.separator+"upload");
        //System.out.println(filePath);
        File fileDrect = new File(filePath);
        if(!fileDrect.exists()){
            fileDrect.mkdirs();
        }
        File upoloadFile = new File(fileDrect,fileName);
        FileOutputStream fileOutputStream = null;
        try {
            fileOutputStream = new FileOutputStream(upoloadFile);
            FileCopyUtils.copy(multipartFile.getBytes(), fileOutputStream);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        return "success";
    }

2、上传单个文件

form表单:

<form action="upload1.shtml" enctype="multipart/form-data" method="post">
          <input id="file1" type="file" name="file" />
          <br/><input type="submit" value="提交" />
</form>

java代码:

@RequestMapping("upload1.shtml")
    public String uploadFile1(@RequestParam("file") MultipartFile multipartFile,HttpServletRequest request){
        
        String fileName = multipartFile.getOriginalFilename();
        String filePath = request.getServletContext().getRealPath(File.separator+"upload");
        System.out.println(filePath);
        File fileDrect = new File(filePath);
        if(!fileDrect.exists()){
            fileDrect.mkdirs();
        }
        File upoloadFile = new File(fileDrect,fileName);
        FileOutputStream fileOutputStream = null;
        try {
            fileOutputStream = new FileOutputStream(upoloadFile);
            FileCopyUtils.copy(multipartFile.getBytes(), fileOutputStream);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        return "success";
    }

3、多文件上传

form:

<form action="uploadFiles.shtml" enctype="multipart/form-data" method="post">
          <!-- name属性不能相同 -->
          <input id="file2" type="file" name="file" /><br/>
          <input id="file3" type="file" name="file1" /><br/>
          <input id="file4" type="file" name="file2" /><br/>
          <br/><input type="submit" value="提交" />
</form>

java代码:

@RequestMapping("uploadFiles.shtml")
    public String uploadFiles(HttpServletRequest request){
        MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartHttpServletRequest.getFileMap();
        
        String filePath = request.getServletContext().getRealPath(File.separator+"upload");
        File fileDrect = new File(filePath);
        if(!fileDrect.exists()){
            fileDrect.mkdirs();
        }
        
        for(Map.Entry<String, MultipartFile> entry : fileMap.entrySet()){
            MultipartFile multipartFile = entry.getValue();
            if(multipartFile.isEmpty())
                continue;
            String fileName = multipartFile.getOriginalFilename();
            File uploadFile = new File(fileDrect, fileName);
            System.out.println(uploadFile.getAbsolutePath());
            try {
                FileCopyUtils.copy(multipartFile.getBytes(), uploadFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return "success";
    }

4、文件下载

下载链接:

<a href="download.shtml?fileName=123456.txt" >文件下载</a>

java代码:

@RequestMapping("download.shtml")
    public String downLoadFile(String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException{
        response.setContentType("text/html;charset=utf-8");  
        request.setCharacterEncoding("UTF-8");
        
        BufferedInputStream bufferedInputStream = null;
        BufferedOutputStream bufferedOutputStream = null;
        
        String filePath = request.getServletContext().getRealPath(File.separator+"upload");
        File fileDrect = new File(filePath);
        if(!fileDrect.exists()){
            fileDrect.mkdirs();
        }
        File downFile = new File(fileDrect, fileName);
        long fileLength = downFile.length();
        response.setContentType("application/x-msdownload;");  
        response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1"));  
        response.setHeader("Content-Length", String.valueOf(fileLength));
        
        bufferedInputStream = new BufferedInputStream(new FileInputStream(downFile));
        bufferedOutputStream = new BufferedOutputStream(response.getOutputStream());
        byte[] buff = new byte[1024];
        int bytesRead = -1;
        while (-1 != (bytesRead = bufferedInputStream.read(buff))) {
            bufferedOutputStream.write(buff, 0, bytesRead);
        }
        bufferedInputStream.close();
        bufferedOutputStream.close();
        
        return "success";
    }

5、替换选择上传文件按钮文字

<form action="upload.shtml" enctype="multipart/form-data" method="post">
          <input id="file" type="file" name="file" style="display: none"/><input type="button" value="选择文件" οnclick="showBrowse()" />
          <br/><input type="submit" value="提交" />
</form>

<script type="text/javascript">
      function showBrowse(){
          var file = document.getElementById("file");
          if(file){
              file.click();
          }
      }
  </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值