package com.mossle.cdn; import com.mossle.core.util.BaseDTO; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @RestController @RequestMapping("cdn/api") public class CdnController { private static Logger logger = LoggerFactory.getLogger(CdnController.class); private String baseUrl = "http://localhost:8080/mossle-app-cdn/cdn/"; private String baseDir = "mossle.store/cdn"; @RequestMapping("fetch") public BaseDTO fetch( @RequestParam("url") String url, @RequestParam("spaceName") String spaceName, @RequestParam(value = "targetFileName", required = false) String targetFileName) throws Exception { try { targetFileName = CdnUtils.copyUrlToFile(baseDir, url, spaceName, targetFileName); BaseDTO baseDto = new BaseDTO(); baseDto.setData(baseUrl + spaceName + "/" + targetFileName); return baseDto; } catch (Exception ex) { logger.error(ex.getMessage(), ex); BaseDTO baseDto = new BaseDTO(); baseDto.setCode(500); baseDto.setMessage(ex.getMessage()); return baseDto; } } @RequestMapping("upload") public BaseDTO upload( @RequestParam("file") MultipartFile multipartFile, @RequestParam("spaceName") String spaceName, @RequestParam(value = "targetFileName", required = false) String targetFileName) throws Exception { try { targetFileName = CdnUtils.copyMultipartFileToFile(baseDir, multipartFile, spaceName, targetFileName); BaseDTO baseDto = new BaseDTO(); baseDto.setData(baseUrl + spaceName + "/" + targetFileName); return baseDto; } catch (Exception ex) { logger.error(ex.getMessage(), ex); BaseDTO baseDto = new BaseDTO(); baseDto.setCode(500); baseDto.setMessage(ex.getMessage()); return baseDto; } } @Value("${cdn.baseUrl}") public void setBaseUrl(String baseUrl) { this.baseUrl = baseUrl; } @Value("${cdn.baseDir}") public void setBaseDir(String baseDir) { this.baseDir = baseDir; } }