SpringBoot文件上传(官方案例)

  1. 在线文档
  2. 项目结构
    1.源码克隆:git clone https://github.com/spring-guides/gs-uploading-files.git
    2.包含两个项目initial和complete,initial可以根据文档练习完善,complete是完整项目
    3.功能描述:构建接受文件上传的应用程序,并且通过简单的 HTML 界面来测试文件上传下载

  3. 源码分析

    1.POM依赖
    <dependencies>
    	<!--https://blog.csdn.net/tongxin_tongmeng/article/details/128396471-->
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-thymeleaf</artifactId>
    	</dependency>
    	<!--https://blog.csdn.net/tongxin_tongmeng/article/details/128397075-->
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    	<!--https://blog.csdn.net/tongxin_tongmeng/article/details/128399703-->
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-test</artifactId>
    		<scope>test</scope>
    	</dependency>
    </dependencies>
    2.入口类
    // https://blog.csdn.net/tongxin_tongmeng/article/details/128401278
    @SpringBootApplication
    // https://blog.csdn.net/tongxin_tongmeng/article/details/128401815
    @EnableConfigurationProperties(StorageProperties.class)
    public class UploadingFilesApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(UploadingFilesApplication.class, args);
    	}
    
        // https://blog.csdn.net/tongxin_tongmeng/article/details/128402169
    	@Bean
    	CommandLineRunner init(StorageService storageService) {
    		return (args) -> {
    			storageService.deleteAll();
    			storageService.init();
    		};
    	}
    }
    3.控制器
    @Controller
    public class FileUploadController {
    
    	private final StorageService storageService;
    
    	// https://blog.csdn.net/tongxin_tongmeng/article/details/128402579
    	@Autowired
    	public FileUploadController(StorageService storageService) {
    		this.storageService = storageService;
    	}
    
    	// https://blog.csdn.net/tongxin_tongmeng/article/details/128405403
    	@GetMapping("/")
    	public String listUploadedFiles(Model model) throws IOException {
    
    		model.addAttribute("files", storageService.loadAll().map(
    				path -> MvcUriComponentsBuilder.fromMethodName(FileUploadController.class,
    						"serveFile", path.getFileName().toString()).build().toUri().toString())
    				.collect(Collectors.toList()));
    
    		return "uploadForm";
    	}
    
    	@GetMapping("/files/{filename:.+}")
    	// https://blog.csdn.net/tongxin_tongmeng/article/details/128406009
    	@ResponseBody
    	public ResponseEntity<Resource> serveFile(@PathVariable String filename) {
    
    		Resource file = storageService.loadAsResource(filename);
    		return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
    				"attachment; filename=\"" + file.getFilename() + "\"").body(file);
    	}
    
    	@PostMapping("/")
    	public String handleFileUpload(@RequestParam("file") MultipartFile file,
    			RedirectAttributes redirectAttributes) {
    
    		storageService.store(file);
    		// https://blog.csdn.net/tongxin_tongmeng/article/details/128406963
    		redirectAttributes.addFlashAttribute("message",
    				"You successfully uploaded " + file.getOriginalFilename() + "!");
    
    		return "redirect:/";
    	}
    
    	// https://blog.csdn.net/tongxin_tongmeng/article/details/128406477
    	@ExceptionHandler(StorageFileNotFoundException.class)
    	public ResponseEntity<?> handleStorageFileNotFound(StorageFileNotFoundException exc) {
    		return ResponseEntity.notFound().build();
    	}
    
    }
  4. 项目演示
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

童心同萌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值