oss目的:
1.圖片和音視頻等應用的海量存儲
2.網頁或者移動應用的靜態和動態資源分離
利用BGP帶寬,OSS可以實現超低延時的數據直接下載。也可以配合阿里雲CDN加速服務
3.雲端數據處理
比如圖片的裁剪,縮放,鑑黃等
oss使用:
1.http://www.aliyun.com/product/登錄阿里雲,開通oss圖片存儲(如果你還沒有賬號需要先註冊獲取Access Key ID和Access Key Secret)
2.新建bucket(注意命名空間,最好設置公共讀寫),我這邊是以(杭州節點爲例)
3.應用到項目中(http://docs.aliyun.com/#/pub/oss/sdk/java-sdk&preface)下載sdk(導入步驟省略)
4.參照demo寫的簡單的上傳和下載到oss的代碼
上傳圖片:
public void uploadFileToOss(String key, String filename){
File file = new File(filename);
ObjectMetadata objectMeta = new ObjectMetadata();
objectMeta.setContentLength(file.length());
objectMeta.setContentType("image/jpeg");
InputStream input;
try {
input = new FileInputStream(file);
OSSClient client = initParam.getOssClient();
client.putObject(initParam.getBucketName(), key, input, objectMeta);
} catch (FileNotFoundException e) {
logger.error("找不到文件:"+filename);
e.printStackTrace();
}catch(OSSException oe){
logger.error("OSSException");
oe.printStackTrace();
}catch(ClientException ce){
logger.error("ClientException");
ce.printStackTrace();
}
}
下載:
public void downFileFromOss(String key, String filename,
HttpServletRequest request,HttpServletResponse response){
OutputStream outStream=null;
try{
outStream=response.getOutputStream();
ServletUtils.setFileDownloadHeader(request, response, filename);
OSSClient client = initParam.getOssClient();
GetObjectRequest getObjectRequest = new GetObjectRequest(initParam.getBucketName(), key);
OSSObject ossObject = client.getObject(getObjectRequest);
byte[] buffer = new byte[1024];
int bytesRead=0;
outStream = response.getOutputStream();
while ((bytesRead = ossObject.getObjectContent().read(buffer)) > -1) {
outStream.write(buffer, 0, bytesRead);
}
outStream.flush();
} catch (UnsupportedEncodingException e) {
logger.error("下載文件失敗",e);
} catch (IOException e) {
logger.error("下載文件失敗",e);
}finally{
if(outStream != null){
try {
outStream.close();
} catch (IOException e) {
logger.error("關閉輸入流失敗",e);
}
}
}
}