package com.doumee.core.oss;
|
|
import com.aliyun.oss.ClientException;
|
import com.aliyun.oss.OSS;
|
import com.aliyun.oss.OSSClientBuilder;
|
import com.aliyun.oss.OSSException;
|
import com.aliyun.oss.model.BucketInfo;
|
import com.doumee.biz.system.SystemDictDataBiz;
|
import com.doumee.core.utils.Constants;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.io.InputStream;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
@Service
|
public class AliOssService {
|
|
@Autowired
|
private SystemDictDataBiz systemDictDataBiz;
|
|
/**
|
* oss上传文件流
|
*
|
* @param fullFileName
|
* @param file
|
* @return
|
*/
|
public Map uploadFile(String fullFileName, InputStream file) {
|
Map res = new HashMap();
|
String endpoint = systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode();
|
String accessKeyId = systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode();
|
String accessKeySecret = systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode();
|
String bucketName = systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode();
|
OSS ossClient = null;
|
try {
|
ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
|
ossClient.putObject(bucketName, fullFileName, file);
|
String url = "https://" + bucketName + "." + endpoint + "/" + fullFileName;
|
ossClient.shutdown();
|
res.put("code", "200");
|
res.put("url", url);
|
res.put("msg", "上传成功");
|
} catch (OSSException oe) {
|
res.put("code", "500");
|
res.put("url", "");
|
res.put("msg", "尝试操作OSS失败:(" + oe.getErrorCode() + "," + oe.getMessage() + "),请登录阿里云后台核实BucketName域名空间或其它信息");
|
} catch (ClientException ce) {
|
res.put("code", "500");
|
res.put("url", "");
|
res.put("msg", "尝试连接OSS失败:(" + ce.getMessage() + "),请登录阿里云后台核实");
|
} finally {
|
if (ossClient != null) {
|
ossClient.shutdown();
|
}
|
}
|
return res;
|
}
|
|
|
|
/**
|
* 空间校验
|
*
|
* @param endpoint
|
* @param accessKeyId
|
* @param accessKeySecret
|
* @param bucketName
|
* @return
|
*/
|
public Map vaid(String endpoint, String accessKeyId, String accessKeySecret, String bucketName) {
|
Map res = new HashMap();
|
OSS ossClient = null;
|
try {
|
ossClient = new OSSClientBuilder().build(endpoint.trim(), accessKeyId.trim(), accessKeySecret.trim());
|
BucketInfo info = ossClient.getBucketInfo(bucketName.trim());
|
String location = info.getBucket().getLocation();
|
if (!endpoint.trim().contains(info.getBucket().getLocation())) {
|
res.put("code", "500");
|
res.put("msg", "Endpoint校验失败(检测" + bucketName + "结果为" + location + ",与您实际输入的Endpoint不符合,请前去更正)");
|
return res;
|
}
|
if (info != null) {
|
res.put("code", "200");
|
res.put("msg", "OSS校验成功");
|
} else {
|
res.put("code", "500");
|
res.put("msg", "bucketName空间不存在,请登录阿里云后台进行创建操作");
|
}
|
} catch (OSSException oe) {
|
res.put("code", "500");
|
res.put("msg", "尝试操作OSS失败:(" + oe.getErrorCode() + "," + oe.getMessage() + "),请登录阿里云后台核实BucketName域名空间或其它信息");
|
} catch (ClientException ce) {
|
res.put("code", "500");
|
res.put("msg", ce.getMessage());
|
res.put("msg", "尝试连接OSS失败:(" + ce.getMessage() + "),请登录阿里云后台核实");
|
} finally {
|
if (ossClient != null) {
|
ossClient.shutdown();
|
}
|
}
|
return res;
|
}
|
}
|