package cn.timer.api.service; import cn.timer.api.service.impl.OSSServiceImpl; import cn.timer.api.utils.Result; import cn.timer.api.utils.ResultUtil; import cn.timer.api.utils.aliyun.OSSUtil; import cn.timer.api.utils.random.RandomNum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.locks.ReentrantLock; /** * 上传文件的实现层 */ @Service public class OSSService implements OSSServiceImpl { @Autowired private OSSUtil oss; private static ReentrantLock lock= new ReentrantLock(); /** * * @param orgCode * @param moudle * @param file * @return */ @Override public Result<String> upload(int orgCode, String moudle, MultipartFile file) { lock.lock(); String url = null; String randomNickname = RandomNum.getRandomNickname(); File filePath = filePathUpload(orgCode, moudle, randomNickname, file.getOriginalFilename()); int i = 0; while (filePath.exists()) { filePath = filePathUpload(orgCode,moudle,randomNickname,file.getOriginalFilename()); i++; } if (file == null || file.getSize() <= 0) { lock.unlock(); return ResultUtil.error("上传的文件为空,请重新选择!"); } else { try { url = oss.uploadFile(filePath, file.getInputStream()); } catch (IOException e) { e.printStackTrace(); } lock.unlock(); return ResultUtil.data(url, "上传成功!"); } } public static File filePathUpload(int orgCode,String moudle,String randomNickname,String originalFilename){ String path = "8timer2.0/" + orgCode + "/" + moudle + "/" + randomNickname + "/" + originalFilename; File filePath = new File(path); return filePath; } public Result<Object> uploads(int orgCode, String moudle, List<MultipartFile> files){ String url = null; List<String> list = new ArrayList<String>(); for (MultipartFile file : files) { String randomNickname = RandomNum.getRandomNickname(); File filePath = filePathUpload(orgCode, moudle, randomNickname, file.getOriginalFilename()); int i = 0; while (filePath.exists()) { filePath = filePathUpload(orgCode,moudle,randomNickname,file.getOriginalFilename()); i++; } if (file == null || file.getSize() <= 0) { return ResultUtil.error("上传的文件为空,请重新选择!"); } else { try { url = oss.uploadFile(filePath, file.getInputStream()); list.add(url); } catch (IOException e) { e.printStackTrace(); } } } return ResultUtil.data(list, "上传成功!"); } }