java实现文件上传下载功能

时间:2021-12-14 08:01:01

本文实例为大家分享了java实现文件上传下载的具体代码,供大家参考,具体内容如下

1.上传单个文件

Controller控制层

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.io.File;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
@Controller
@RequestMapping("testup")
public class UploadController {
    private static Logger LG= LoggerFactory.getLogger(UploadController.class);
    /**
     * 9.①单个文件上传
     * @param file
     * @param redirectAttributes
     * @return
     */
    @RequestMapping(value="/upload",method=RequestMethod.POST,consumes="multipart/form-data")
    public String uploadFile(@RequestParam MultipartFile file,RedirectAttributes redirectAttributes){
        if(file.isEmpty()){
            redirectAttributes.addFlashAttribute("message", "Plse select file");
            return "redirect:/test/index";
        }
        try {
            String fileName=file.getOriginalFilename();
            /*上传文件存储位置*/
            String destFileName="D:\\whupload"+File.separator+fileName;
            File destFile=new File(destFileName);
            file.transferTo(destFile);
            //文件上传成功显示
            //redirectAttributes.addAttribute("message","upload file success.");
            redirectAttributes.addFlashAttribute("message", "upload file success.");
        } catch (Exception e) {
            //文件上传失败显示
            redirectAttributes.addFlashAttribute("message", "upload file fail");
            LG.debug(e.getMessage());
        }
        return "redirect:/test/index";
    }
 
}

前端页面源码

?
1
2
3
4
5
<p>上传文件,使用multipart/form-data类型</p>
  <form action="/testup/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <button type="submit">上传</button>
</form>

2.上传多个文件

Controller控制层

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.io.File;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
@Controller
@RequestMapping("testup")
public class UploadController {
    private static Logger LG= LoggerFactory.getLogger(UploadController.class);
  
 
    /**
     * 9.②多个文件上传
     */
    @RequestMapping(value="/uploadBatchFile",method=RequestMethod.POST,consumes="multipart/form-data")
    public String uploadBatchFile(@RequestParam MultipartFile[] files,RedirectAttributes redirectAttributes){
        boolean isEmpty=true;
        try {
            for (MultipartFile multipartFile : files) {
                if(multipartFile.isEmpty()){
                    continue;
                }
                String fileName=multipartFile.getOriginalFilename();
                String destFileName="D:\\whupload"+File.separator+fileName;
                File destFile=new File(destFileName);
                multipartFile.transferTo(destFile);
                isEmpty=false;
            }
            //int i=1/0;
            //localhost:8086/test/index?message=upload file success
            //redirectAttributes.addAttribute("message","upload file success.");
 
        } catch (Exception e) {
            // TODO Auto-generated catch block
            redirectAttributes.addFlashAttribute("message", "upload file fail");
            LG.debug(e.getMessage());
            return "redirect:/test/index";
        }
        if(isEmpty){
            redirectAttributes.addFlashAttribute("message", "Plse select file");
        }else{
            redirectAttributes.addFlashAttribute("message", "upload file success.");
        }
        return "redirect:/test/index";
    }
 
    
}

前端页面源码

?
1
2
3
4
5
<form action="/testup/uploadBatchFile" method="post" enctype="multipart/form-data">
        <input type="file" name="files">
        <input type="file" name="files">
        <button type="submit">上传</button>
</form>

3.下载文件

Controller控制器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.io.File;
import java.net.MalformedURLException;
import java.nio.file.Paths;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
 
@Controller
@RequestMapping("testup")
public class UploadController {
    private static Logger LG= LoggerFactory.getLogger(UploadController.class);
    
 
    /**
     * 10.下载文件
     */
    @RequestMapping("/download")
    @ResponseBody
    public ResponseEntity<Resource> downloadFile(@RequestParam String fileName){
        try {
            Resource resource=new UrlResource(
                    //拼接下载的文件的原路径
                    Paths.get("D:/whupload"+File.separator+fileName).toUri());
            if(resource.exists() && resource.isReadable()){
                return ResponseEntity.ok()
                        .header(HttpHeaders.CONTENT_TYPE, "application/octet-stream")
                        .header(HttpHeaders.CONTENT_DISPOSITION,"attachment;filename=\""+
                                resource.getFilename()+"\"").body(resource);
 
            }
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            LG.debug(e.getMessage());
        }
        return null;
    }
}

前端页面源码

?
1
2
<p>下载文件,这里设置默认下载文件为Demo.txt,fileName是下载文件名</p>
<a href="/testup/download?fileName=Demo.txt" rel="external nofollow" >download file</a>

运行效果

java实现文件上传下载功能

最后,需要注意的是,文件上传有默认的大小限制
在配置文件中加入,即可消除限制

?
1
2
spring.servlet.multipart.max-file-size=-1
spring.servlet.multipart.max-request-size=-1

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/wh456413/article/details/107302180