package com.hengtong.metro.jlact.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import com.aliyun.oss.HttpMethod;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.PutObjectResult;
/**
* 阿里雲oss操作工具類
*
* @author admin
*
*/
public class AliyunOSSUtils {
public final static String ENDPOINT = "oss-cn-beijing.aliyuncs.com";//地址
public final static String ACCESS_KEY_ID = "****"; //阿里雲密鑰 在密鑰管理中
public final static String ACCESS_KEY_SECRET = "****";//阿里雲密鑰 在密鑰管理中
public final static String BUCKET_NAME = "****"; //平臺文件夾地址
/**
* 開啓oss client
*
* @return
*/
public static OSSClient getOSSClient() {
OSSClient ossClient = new OSSClient(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
return ossClient;
}
/**
* 關閉oss client
*
* @param ossClient
*/
public static void closeOSSClient(OSSClient ossClient) {
ossClient.shutdown();
}
/**
* 上傳文件到oss
*/
public static String upload(InputStream inputStream, String filename) {
OSSClient ossClient = getOSSClient();
PutObjectResult result = ossClient.putObject(BUCKET_NAME, filename, inputStream);
String etag = result.getETag();
System.out.println(etag);
// 設置URL過期時間爲10年 3600l* 1000*24*365*10
Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 10);
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(BUCKET_NAME, filename, HttpMethod.GET);
request.setExpiration(expiration);
// 獲取URL(HTTP GET請求)。
URL signedUrl = ossClient.generatePresignedUrl(request);
// 文件路徑,放到瀏覽器可直接下載
String url = signedUrl.getHost() + signedUrl.getPath();
closeOSSClient(ossClient);
return url;
}
/**
* 下載文件(返回流) filename 需要下載的文件名稱
*/
public static InputStream download(String filename) {
OSSClient ossClient = getOSSClient();
InputStream content = null;
try {
//OSSObject ossObj = ossClient.getObject(new GetObjectRequest(BUCKET_NAME, filename));
OSSObject ossObj = ossClient.getObject(BUCKET_NAME, filename);
content = ossObj.getObjectContent();
return content;
} catch (Exception e) {
e.printStackTrace();
throw e;
}finally {
//closeOSSClient(ossClient);
}
}
/**
* 刪除文件
*/
public static void delete(String filename) {
OSSClient ossClient = getOSSClient();
ossClient.deleteObject(BUCKET_NAME, filename);
closeOSSClient(ossClient);
}
public static void main(String[] args) throws IOException {
// File file = new File("C:\\Users\\admin\\Desktop\\123.jpg");
// InputStream is = new FileInputStream(file);
// upload(is,"12345");
// delete("12345");
InputStream content = download("12345");
int index;
byte[] bytes = new byte[1024];
FileOutputStream downloadFile = new FileOutputStream("C:\\Users\\admin\\Desktop\\12356.jpg");
while ((index = content.read(bytes)) != -1) {
downloadFile.write(bytes, 0, index);
downloadFile.flush();
}
downloadFile.close();
content.close();
// InputStream in = download("2ed4cb7216744f84a0269b842455fd37.zip");
// System.out.println(in.available());
}
}