// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
private static String endpoint = "http://oss-cn-beijing.aliyuncs.com/";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
private static String accessKeyId = "LTAI5tMTvwx7TtXauXJAypEx";
private static String accessKeySecret = "T6yyLAjFOkRCtMdFAvrEjCcMJOy3Kl";
// 填写Bucket名称,例如examplebucket。
private static String bucketName = "upload-img-fly";
/**
* @Author: fly
* @Description: 文件上传到OSS云储存
* @Date: 2021/12/22 19:22
* @param: [fileName:文件名称, inputStream:文件输入流]
* @paramType: [java.lang.String, java.io.InputStream]
* @Return: fileName:返回上传到OSS云储存上的 文件名/名称
* fileFix:文件后缀(.jpg)
**/
public static Map<String, String> upLoadFile(String fileName, InputStream inputStream){
Map<String, String> responseInfo = new HashMap<>();
//生成OSS客户端并建立连接
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//文件后缀
String fileFix = fileName.substring(fileName.lastIndexOf("."));
//随机获取一个UUID作为文件名
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
//上传到OSS后的文件名称
fileName = "file/"+uuid+fileFix;
//上传到OSS
ossClient.putObject(bucketName,fileName,inputStream);
//返回上传到OSS后的文件名称
responseInfo.put("fileName",fileName);
//返回文件后缀(.jpg)
responseInfo.put("fileFix",fileFix);
//关闭连接
ossClient.shutdown();
return responseInfo;
}
/**
* @Author: fly
* @Description: 下载文件
* @Date: 2021/12/23 11:11
* @param: [fileName :文件名称, downloadPath:下载到某个路径下]
* @paramType: [java.lang.String, java.lang.String]
**/
public static void downLoadFile(String fileName,String downloadPath){
Map<String, String> responseInfo = new HashMap<>();
//生成OSS客户端并建立连接
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//获取OSS操作对象
OSSObject object = ossClient.getObject(bucketName, fileName);
//获取文件流
InputStream inputStream = object.getObjectContent();
//当前系统时间的毫秒值
long time = new Date().getTime();
//文件后缀
String fileFix = fileName.substring(fileName.lastIndexOf("."));
//下载文件的具体路径 + 名称
downloadPath = downloadPath + "/" + time + fileFix;
FileOutputStream outputStream = null;
try {
//文件输出流 (文件输出(下载)的路径 + 名称)
outputStream = new FileOutputStream(downloadPath);
//将获取到的文件流下载(copy)到某个路径下
IOUtils.copy(inputStream,outputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//判断文件输出流不为空
if (outputStream != null){
try {
//关闭输出流
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//判断文件输入流不为空
if (inputStream != null){
try {
//关闭输入流
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//关闭OSS连接
ossClient.shutdown();
}
}