package io.loli.sc.server.storage; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import javax.imageio.ImageIO; import org.apache.commons.lang3.StringUtils; import com.aliyun.openservices.oss.OSSClient; import com.aliyun.openservices.oss.model.ObjectMetadata; public class AliStorageUploader extends StorageUploader { private String accessKeyId; private String accessKeySecret; private String endpoint; private String bucketName; private String uploadUrl; public AliStorageUploader(String accessKeyId, String accessKeySecret, String endpoint, String uploadUrl, String bucketName) { super(); this.accessKeyId = accessKeyId; this.accessKeySecret = accessKeySecret; this.endpoint = endpoint; this.bucketName = bucketName; this.uploadUrl = uploadUrl; } @Override public String upload(File file) { return this.upload(file, null); } @Override public String upload(File file, String contentType) { // 初始化一个OSSClient OSSClient client = new OSSClient(uploadUrl.trim(), accessKeyId.trim(), accessKeySecret.trim()); // 获取指定文件的输入流 InputStream content = null; try { content = new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } // 创建上传Object的Metadata ObjectMetadata meta = new ObjectMetadata(); if (StringUtils.isNotBlank(contentType)) { meta.setContentType(contentType); } // 必须设置ContentLength meta.setContentLength(file.length()); BufferedImage bi = null; try { bi = ImageIO.read(file); } catch (IOException e) { } if (bi != null) { meta.setContentType("image/png"); } // 上传Object. String name = file.getName(); client.putObject(bucketName, name, content, meta); return endpoint + "/" + name; } @Override public void delete(String file) { OSSClient client = new OSSClient(uploadUrl, accessKeyId, accessKeySecret); client.deleteObject(bucketName, file); } }