阿里雲OSS進行圖片上傳
阿新 • • 發佈:2019-01-03
private static String FOLDER="upload/";
/**
* 獲取阿里雲OSS客戶端物件
* @return
*/
public static OSSClient getOSSClient(){
return new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET);
}
/**
* 建立儲存空間
* @param ossClient OSS連線
* @param bucketName 儲存空間
* @return
*/
public static String createBucketName(OSSClient ossClient,String bucketName){
final String bucketNames=bucketName;
if(!ossClient.doesBucketExist(bucketName)){
//建立儲存空間
Bucket bucket=ossClient.createBucket(bucketName);
return bucket.getName();
}
return bucketNames;
}
/**
*
* @param ossClient
* @param bucketName
*/
public static void deleteBucket(OSSClient ossClient,String bucketName){
ossClient.deleteBucket(bucketName);
}
/**
* 建立模擬資料夾
* @param ossClient
* @param bucketName
* @param folder
* @return
*/
public static String createFolder(OSSClient ossClient,String bucketName,String folder){
//資料夾名
final String keySuffixWithSlash=folder;
//判斷資料夾是否存在,不存在則建立
if(!ossClient.doesObjectExist(bucketName,keySuffixWithSlash)){
//建立資料夾
ossClient.putObject(bucketName,keySuffixWithSlash,new ByteArrayInputStream(new byte[0]));
//得到資料夾名
OSSObject object = ossClient.getObject(bucketName,keySuffixWithSlash);
String fileDir=object.getKey();
return fileDir;
}
return keySuffixWithSlash;
}
/**
* 根據key刪除OSS伺服器上的檔案
* @param ossClient
* @param bucketName
* @param folder
* @param key
*/
public static void deleteFile(OSSClient ossClient,String bucketName,String folder, String key){
ossClient.deleteObject(bucketName,folder+key);
}
/**
* 上傳圖片至OSS
* @param ossClient
* @param file
* @param bucketName
* @param folder
* @return
*/
public static String uploadObject2OSS(OSSClient ossClient,MultipartFile file,String bucketName,String folder){
String resultStr=null;
try {
//InputStream is = new FileInputStream(file);
String fileName=file.getOriginalFilename();
Long fileSize = file.getSize();
ObjectMetadata metadata= new ObjectMetadata();
metadata.setContentLength(fileSize);
metadata.setCacheControl("no-cache");
metadata.setHeader("Pragma", "no-cache");
metadata.setContentEncoding("utf-8");
metadata.setContentType(getContentType(fileName));
metadata.setContentDisposition("filename/filesize="+fileName+"/"+fileSize+"Byte.");
//上傳檔案
PutObjectResult putResult= ossClient.putObject(bucketName, folder+fileName, file.getInputStream(),metadata);
resultStr=putResult.getETag();
} catch (IOException e) {
e.printStackTrace();
}
return resultStr;
}
public static String getContentType(String fileName){
String fileExtension=fileName.substring(fileName.lastIndexOf("."));
if(".bmp".equalsIgnoreCase(fileExtension)){
return "image/bmp";
}
if(".gif".equalsIgnoreCase(fileExtension)){
return "image/gif";
}
if(".jpeg".equalsIgnoreCase(fileExtension)||".jpg".equalsIgnoreCase(fileExtension)||".png".equalsIgnoreCase(fileExtension)){
return "image/jpeg";
}
return fileName;
}
//呼叫該方法進行上傳
public static String uploadImg(MultipartFile headPic,String folder) {
OSSClient ossClient=getOSSClient();
String md5key=uploadObject2OSS(ossClient, headPic, BACKET_NAME, folder);
return md5key;
}
/**
* 獲取阿里雲OSS客戶端物件
* @return
*/
public static OSSClient getOSSClient(){
return new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET);
}
/**
* 建立儲存空間
* @param ossClient OSS連線
* @param bucketName 儲存空間
* @return
*/
public static String createBucketName(OSSClient ossClient,String bucketName){
final String bucketNames=bucketName;
if(!ossClient.doesBucketExist(bucketName)){
//建立儲存空間
Bucket bucket=ossClient.createBucket(bucketName);
return bucket.getName();
}
return bucketNames;
}
/**
*
* @param ossClient
* @param bucketName
*/
public static void deleteBucket(OSSClient ossClient,String bucketName){
ossClient.deleteBucket(bucketName);
}
/**
* 建立模擬資料夾
* @param ossClient
* @param bucketName
* @param folder
* @return
*/
public static String createFolder(OSSClient ossClient,String bucketName,String folder){
//資料夾名
final String keySuffixWithSlash=folder;
//判斷資料夾是否存在,不存在則建立
if(!ossClient.doesObjectExist(bucketName,keySuffixWithSlash)){
//建立資料夾
ossClient.putObject(bucketName,keySuffixWithSlash,new ByteArrayInputStream(new byte[0]));
//得到資料夾名
OSSObject object = ossClient.getObject(bucketName,keySuffixWithSlash);
String fileDir=object.getKey();
return fileDir;
}
return keySuffixWithSlash;
}
/**
* 根據key刪除OSS伺服器上的檔案
* @param ossClient
* @param bucketName
* @param folder
* @param key
*/
public static void deleteFile(OSSClient ossClient,String bucketName,String folder, String key){
ossClient.deleteObject(bucketName,folder+key);
}
/**
* 上傳圖片至OSS
* @param ossClient
* @param file
* @param bucketName
* @param folder
* @return
*/
public static String uploadObject2OSS(OSSClient ossClient,MultipartFile file,String bucketName,String folder){
String resultStr=null;
try {
//InputStream is = new FileInputStream(file);
String fileName=file.getOriginalFilename();
Long fileSize = file.getSize();
ObjectMetadata metadata= new ObjectMetadata();
metadata.setContentLength(fileSize);
metadata.setCacheControl("no-cache");
metadata.setHeader("Pragma", "no-cache");
metadata.setContentEncoding("utf-8");
metadata.setContentType(getContentType(fileName));
metadata.setContentDisposition("filename/filesize="+fileName+"/"+fileSize+"Byte.");
//上傳檔案
PutObjectResult putResult= ossClient.putObject(bucketName, folder+fileName, file.getInputStream(),metadata);
resultStr=putResult.getETag();
} catch (IOException e) {
e.printStackTrace();
}
return resultStr;
}
public static String getContentType(String fileName){
String fileExtension=fileName.substring(fileName.lastIndexOf("."));
if(".bmp".equalsIgnoreCase(fileExtension)){
return "image/bmp";
}
if(".gif".equalsIgnoreCase(fileExtension)){
return "image/gif";
}
if(".jpeg".equalsIgnoreCase(fileExtension)||".jpg".equalsIgnoreCase(fileExtension)||".png".equalsIgnoreCase(fileExtension)){
return "image/jpeg";
}
return fileName;
}
//呼叫該方法進行上傳
public static String uploadImg(MultipartFile headPic,String folder) {
OSSClient ossClient=getOSSClient();
String md5key=uploadObject2OSS(ossClient, headPic, BACKET_NAME, folder);
return md5key;
}