// 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();
}
}