好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

java实现文件上传下载功能

本文实例为大家分享了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 >

运行效果

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

?

1

2

spring.servlet.multipart.max-file-size=- 1

spring.servlet.multipart.max-request-size=- 1

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

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

查看更多关于java实现文件上传下载功能的详细内容...

  阅读:23次