package com.doumee.core.oss; import com.doumee.core.utils.ID; import lombok.Cleanup; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Map; /** * 附件上传 */ @Service public class UploadFileService { @Autowired private AliOssService aliOssService; public FileModel uploadWxCode(InputStream inputStream,String id) throws Exception{ MultipartFile multipartFile = new MockMultipartFile(id+".png",id+".png","", inputStream); return this.uploadAliOssFile(multipartFile,"wxCode",true); } /** * 2、上传阿里云OSS * * @param file: 表单文件 * @param model:是否存在目录 * @param ifCreateFileName:是否创建新名字 true/false */ public FileModel uploadAliOssFile(MultipartFile file, String model, Boolean ifCreateFileName) { FileModel res = new FileModel(); //OSS String origin=FileContent.fileOrigin.get(1); //原文件名(如:xxxx.doc) String originalFilename = file.getOriginalFilename(); //文件后缀(如:doc) String suffix = originalFilename.substring(file.getOriginalFilename().lastIndexOf(".") + 1); //文件名 String fileName = ifCreateFileName ? ID.nextGUID() + originalFilename.substring(file.getOriginalFilename().lastIndexOf(".")) : originalFilename; //--------OOS文件存放根路径--------- String fullFileName = this.getRootPath(model,fileName); res.setOrigin(origin); res.setSuffix(suffix); //新文件名 res.setNewFilename(fileName); //原文件名 res.setFileName(originalFilename); res.setFilePath(fullFileName); try { Map map = aliOssService.uploadFile(fullFileName, file.getInputStream()); String code = map.get("code").toString(); String url = map.get("url").toString(); String msg = map.get("msg").toString(); if (code.equals("200")) { res.setCode(0); res.setFileUrl(url); res.setMsg(msg); } else { res.setCode(-1); res.setMsg(msg); } } catch (Exception e) { e.printStackTrace(); res.setMsg(e.getMessage()); res.setCode(-1); } return res; } /** * 获取根目录及下载URL * * @param model * @param fileName * @return */ public String getRootPath(String model, String fileName) { String time = LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE); //根目录 String catalog = "file"; String oss_doc= time+ "/" + model + "/" + fileName; if(StringUtils.isNotBlank(catalog)){ oss_doc=catalog.trim()+"/"+oss_doc; } return oss_doc; } }