利用SpirngBoot实现文件上传功能( 二 )
文章插图
四、SpringBoot的Restful风格 , 返回url/** * 文件上传 * * @author Summerday */@RestControllerpublic class FileUploadRestController {/*** 文件名长度*/private static final int DEFAULT_FILE_NAME_LENGTH = 100;/*** 允许的文件类型*/private static final String[] ALLOWED_EXTENSIONS = {"jpg", "img", "png", "gif"};/*** 项目路径*/private static final String UPLOADED_FOLDER = System.getProperty("user.dir");@PostMapping("/restUpload")public Map singleFileUpload(@RequestParam("file") MultipartFile file) throws Exception {if (file.isEmpty()) {throw new Exception("文件为空!");}String filename = upload(file);String url = "/upload/" + filename;Map map = new HashMap<>(2);map.put("msg","上传成功");map.put("url",url);return map;}/*** 上传方法*/private String upload(MultipartFile file) throws Exception {int len = file.getOriginalFilename().length();if (len > DEFAULT_FILE_NAME_LENGTH) {throw new Exception("文件名超出限制!");}String extension = getExtension(file);if(!isValidExtension(extension)){throw new Exception("文件格式不正确");}// 自定义文件名String filename = getPathName(file);// 获取file对象File desc = getFile(filename);// 写入filefile.transferTo(desc);return filename;}/*** 获取file对象*/private File getFile(String filename) throws IOException {File file = new File(UPLOADED_FOLDER + "/" + filename);if(!file.getParentFile().exists()){file.getParentFile().mkdirs();}if(!file.exists()){file.createNewFile();}return file;}/*** 验证文件类型是否正确*/private boolean isValidExtension(String extension) {for (String allowedExtension : ALLOWED_EXTENSIONS) {if(extension.equalsIgnoreCase(allowedExtension)){return true;}}return false;}/*** 此处自定义文件名,uuid + extension*/private String getPathName(MultipartFile file) {String extension = getExtension(file);return UUID.randomUUID().toString() + "." + extension;}/*** 获取扩展名*/private String getExtension(MultipartFile file) {String originalFilename = file.getOriginalFilename();return originalFilename.substring(originalFilename.lastIndexOf('.') + 1);}}
原文链接:
【利用SpirngBoot实现文件上传功能】如果觉得本文对你有帮助 , 可以转发关注支持一下
- 与用户|掌握好这4个步骤,实现了规模性的盈利
- 落地|“电竞之都”争夺战中,城市们该怎样实现产业落地?
- 回收利用协|固废“零”时代产业如何共生?
- 不良|打开“无痕模式”就以为无人知?殊不知,“不良网站”正在利用你
- 美好生活|以人为本实现万物互融,中国视频社会化时代开启
- 手机|女神的自拍秘密,只需一部vivo S7便可以实现
- 自动任务|赶在三星 S21 发布之前实现语音解锁
- 格式化|利用好这3个隐藏技巧,Power BI 开发体验更丝滑
- 产业|新主导力量来了,上海如何实现一次“革命性重塑”?
- Mate40Pro|华为Mate40Pro前置镜头有多强实现的这些功能国产机没人做到