package zy.cloud.wms.common.service; import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.OSSObject; import com.aliyun.oss.model.ObjectMetadata; import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import lombok.Data; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.net.URL; import java.util.Date; /** * 阿里云OSS服务类 * Created by vincent on 2019-11-26 */ @Data @Service("ossService") public class OssService { private static Logger log = LoggerFactory.getLogger(OssService.class); private static final String OSS_ENDPOINT = "http://oss-cn-hangzhou.aliyuncs.com"; @Value("${aliyun.oss.id}") private String accessKeyId; @Value("${aliyun.oss.secret}") private String accessKeySecret; @Value("${aliyun.oss.bucket}") private String bucket; @Value("${aliyun.oss.endpoint}") private String endpoint; @Autowired private SnowflakeIdWorker snowflakeIdWorker; /** * 上传OSS文件 * @return the url */ public String upload(InputStream inputStream, String suffix){ if(suffix.trim().equals("file")){ suffix="jpg"; } OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret); String name = ""; try { if (!ossClient.doesBucketExist(bucket)) { ossClient.createBucket(bucket); log.info("您的Bucket不存在,创建Bucket:{}",bucket); } name = String.valueOf(snowflakeIdWorker.nextId()).concat(".").concat(suffix); // 添加 ContentType ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentType("image/jpg"); ossClient.putObject(bucket, name, inputStream, objectMetadata); Date expiration = new Date(new Date().getTime() + 3600L * 1000 * 24 * 365 * 100); URL url = ossClient.generatePresignedUrl(bucket, name, expiration); log.info("OSS文件上传成功: {}", name); // return String.valueOf(url); return "http://tjdt.oss-cn-hangzhou.aliyuncs.com/"+name; } catch (Exception e){ e.printStackTrace(); } finally { ossClient.shutdown(); } throw new CoolException("500-上传失败"); } public String upload(InputStream inputStream) { return upload(inputStream, ".jpg"); } /** * 下载OSS文件 */ public void download(String name) { OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret); try { OSSObject ossObject = ossClient.getObject(bucket, name); InputStream inputStream = ossObject.getObjectContent(); // do transfer inputStream.close(); log.info("OSS文件下载成功: {}", name); } catch (Exception e){ e.printStackTrace(); } finally { ossClient.shutdown(); } } /** * 删除OSS文件 */ public boolean delete(String name) { OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret); try { ossClient.deleteObject(bucket, name); } catch (Exception e){ e.printStackTrace(); return false; } finally { ossClient.shutdown(); } return true; } public static void main(String[] args) { File file = new File("E:\\tmp\\v2-fbbb97b977b5cebc66dc3cefab0ac981_r.jpg"); try { InputStream in = new FileInputStream(file); OssService ossService = new OssService(); ossService.setAccessKeyId("LTAI4GDzr6ioSHuRw2mk22ug"); ossService.setAccessKeySecret("84CHL7tF21LbU1qpaP0jn9mIAZP9bv"); ossService.setBucket("tjdt"); ossService.setEndpoint("http://oss-cn-hangzhou.aliyuncs.com"); ossService.setSnowflakeIdWorker(new SnowflakeIdWorker()); System.out.println(ossService.upload(in)); } catch (FileNotFoundException e) { e.printStackTrace(); } } }