spring boot圖片上傳


 

 

配置限制文件上傳大小

 servlet:
    multipart:
      max-file-size: 5MB # 限制文件上傳的大小

 

SpringMVC會封裝為一個接口:MultipartFile

@Controller
@RequestMapping("upload")
public class UploadController {

    @Autowired
    private UploadService uploadService;

    /**
     * 圖片上傳
     * @param file
     * @return
     */
    @PostMapping("image")
    public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file){
        String url = this.uploadService.upload(file);
        if (StringUtils.isBlank(url)) {
            return ResponseEntity.badRequest().build();
        }
        return ResponseEntity.status(HttpStatus.CREATED).body(url);
    }
}

對上傳的內容進行校驗:

  1. 校驗文件大小

  2. 校驗文件的媒體類型

  3. 校驗文件的內容

@Service
public class UploadService {

    private static final List<String> CONTENT_TYPES = Arrays.asList("image/jpeg", "image/gif");

    private static final Logger LOGGER = LoggerFactory.getLogger(UploadService.class);

    public String upload(MultipartFile file) {

        String originalFilename = file.getOriginalFilename();
        // 校驗文件的類型
        String contentType = file.getContentType();
        if (!CONTENT_TYPES.contains(contentType)){
            // 文件類型不合法,直接返回null
            LOGGER.info("文件類型不合法:{}", originalFilename);
            return null;
        }

        try {
            // 校驗文件的內容
            BufferedImage bufferedImage = ImageIO.read(file.getInputStream());
            if (bufferedImage == null){
                LOGGER.info("文件內容不合法:{}", originalFilename);
                return null;
            }

            // 保存到服務器
            file.transferTo(new File("C:\\test\\images\\" + originalFilename));

            // 生成url地址,返回
            return "http://image.test.com/" + originalFilename;
        } catch (IOException e) {
            LOGGER.info("服務器內部錯誤:{}", originalFilename);
            e.printStackTrace();
        }
        return null;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM