ylbtech-IJ:ALI OSS 配置 |
1. src/resources/返回頂部 |
# oss\u7684\u5916\u7f51\u57df\u540d ENDPOINT = oss-cn-beijing.aliyuncs.com # oss\u7684Access Key ID ACCESS_KEY_ID = LTAIL15ejxI1XXXi #oss\u7684Access Key Secret ACCESS_KEY_SECRET = EBA8t6QzgvHQQ0ixcgeLHcyfXGXXXj #oss\u7684bucket\u540d\u79f0 BACKET_NAME = xxxbucket #oss\u7684\u6587\u4ef6\u5939\u540d\u79f0 FOLDER = shineyoo/ #PARTNER_ID = 2000010 #AUTH_URL = Http://jf.dingcan365.com/jiaofei/ghkd/auth/ #RECHARGE_URL = Http://jf.dingcan365.com/jiaofei/ghkd/pay/ #QUERY_URL = Http://jf.dingcan365.com/jiaofei/ghkd/orderQuery/ #VERSION = 1.0 #COMM_ID = 1000001 #P_KEY = GKpt~!@#JJNET #DATE_FORMAT = yyyyMMddHHmmss
2. src/java/返回頂部 |
package com.shineyoo.manager.util.common.aliyun.oss; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.Bucket; import com.aliyun.oss.model.CannedAccessControlList; import com.aliyun.oss.model.OSSObject; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectResult; import com.shineyoo.manager.util.common.utils.IdGen; import com.shineyoo.manager.util.common.utils.PropertiesLoader; /** * @class:AliyunOSSClientUtil * @descript:java使用阿里雲OSS存儲對象上傳圖片 * @date:2017年3月16日 下午5:58:08 * @author sang */ public class AliyunOSSClientUtil { //log日誌 private static Logger logger = LoggerFactory.getLogger(AliyunOSSClientUtil.class); private static PropertiesLoader loader = new PropertiesLoader("aliyunoss.properties"); //阿里雲API的內或外網域名 private static String ENDPOINT; //阿里雲API的密鑰Access Key ID private static String ACCESS_KEY_ID; //阿里雲API的密鑰Access Key Secret private static String ACCESS_KEY_SECRET; //阿里雲API的bucket名稱 private static String BACKET_NAME; //阿里雲API的文件夾名稱 private static String FOLDER; //初始化屬性 static{ ENDPOINT = loader.getProperty("ENDPOINT"); ACCESS_KEY_ID = loader.getProperty("ACCESS_KEY_ID"); ACCESS_KEY_SECRET = loader.getProperty("ACCESS_KEY_SECRET"); BACKET_NAME = loader.getProperty("BACKET_NAME"); FOLDER = loader.getProperty("FOLDER"); } /** * 獲取配置 * @see */ public static String getConfig(String key) { String value = loader.getProperty(key); return value; } /** * 獲取阿里雲OSS客戶端對象 * @return ossClient */ 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); logger.info("建立存儲空間成功"); return bucket.getName(); } return bucketNames; } /** * 建立存儲空間 * @param ossClient OSS鏈接 * @param bucketName 存儲空間 * @return */ public static void putBucketACL(OSSClient ossClient,String bucketName){ //存儲空間 final String bucketNames=bucketName; System.out.println(ossClient.doesBucketExist(bucketName)); if(ossClient.doesBucketExist(bucketName)){ //修改存儲空間的權限 ossClient.setBucketAcl(bucketNames, CannedAccessControlList.PublicRead); logger.info("建立存儲空間成功"); } } /** * 刪除存儲空間buckName * @param ossClient oss對象 * @param bucketName 存儲空間 */ public static void deleteBucket(OSSClient ossClient, String bucketName){ ossClient.deleteBucket(bucketName); logger.info("刪除" + bucketName + "Bucket成功"); } /** * 建立模擬文件夾 * @param ossClient oss鏈接 * @param bucketName 存儲空間 * @param folder 模擬文件夾名如"qj_nanjing/" * @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])); logger.info("建立文件夾成功"); //獲得文件夾名 OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash); String fileDir=object.getKey(); return fileDir; } return keySuffixWithSlash; } /** * 根據key刪除OSS服務器上的文件 * @param ossClient oss鏈接 * @param bucketName 存儲空間 * @param folder 模擬文件夾名 如"qj_nanjing/" * @param key Bucket下的文件的路徑名+文件名 如:"upload/cake.jpg" */ public static void deleteFile(OSSClient ossClient, String bucketName, String folder, String key){ ossClient.deleteObject(bucketName, folder + key); logger.info("刪除" + bucketName + "下的文件" + folder + key + "成功"); } /** * 根據key刪除OSS服務器上的文件 * @param key Bucket下的文件的路徑名+文件名 如:"upload/cake.jpg" */ public static void deleteFile(String key){ OSSClient ossClient = getOSSClient(); ossClient.deleteObject(BACKET_NAME,key); logger.info("刪除" + BACKET_NAME + "下的文件" + key + "成功"); } /** * 上傳圖片至OSS * @param file 上傳文件(文件全路徑如:D:\\image\\cake.jpg) * @return String 返回訪問路徑 * */ public static String uploadObject2OSS(File file) { OSSClient ossClient = getOSSClient(); String resultStr = null; String fileName = null; try { //以輸入流的形式上傳文件 InputStream is = new FileInputStream(file); //文件名 若是出現重複,則從新生成名字,再上傳 fileName = getfileName(file.getName()); if(ossClient.doesObjectExist(BACKET_NAME, FOLDER + fileName)){ fileName = getfileName(file.getName()); } //文件大小 Long fileSize = file.length(); //建立上傳Object的Metadata ObjectMetadata metadata = new ObjectMetadata(); //上傳的文件的長度 metadata.setContentLength(is.available()); //指定該Object被下載時的網頁的緩存行爲 metadata.setCacheControl("no-cache"); //指定該Object下設置Header metadata.setHeader("Pragma", "no-cache"); //指定該Object被下載時的內容編碼格式 metadata.setContentEncoding("utf-8"); //文件的MIME,定義文件的類型及網頁編碼,決定瀏覽器將以什麼形式、什麼編碼讀取文件。若是用戶沒有指定則根據Key或文件名的擴展名生成, //若是沒有擴展名則填默認值application/octet-stream metadata.setContentType(getContentType(fileName)); //指定該Object被下載時的名稱(指示MINME用戶代理如何顯示附加的文件,打開或下載,及文件名稱) metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte."); //上傳文件 (上傳文件流的形式) PutObjectResult putResult = ossClient.putObject(BACKET_NAME, FOLDER + fileName, is, metadata); resultStr = putResult.getETag(); logger.info("上傳阿里雲OSS服務器成功." +resultStr); //解析結果 } catch (Exception e) { e.printStackTrace(); logger.error("上傳阿里雲OSS服務器異常." + e.getMessage(), e); } return BACKET_NAME+"."+ENDPOINT+"/"+FOLDER + fileName; } /** * 上傳圖片至OSS * @param in 上傳文件流 * @return String 返回訪問路徑,圖片存儲KEY * */ public static String uploadObject2OSS(InputStream in,String name,Long size) { OSSClient ossClient = getOSSClient(); String resultStr = null; String fileName = null; try { //文件名 若是出現重複,則從新生成名字,再上傳 fileName = getfileName(name); if(ossClient.doesObjectExist(BACKET_NAME, FOLDER + fileName)){ fileName = getfileName(name); } //文件大小 Long fileSize = size; //建立上傳Object的Metadata ObjectMetadata metadata = new ObjectMetadata(); //上傳的文件的長度 metadata.setContentLength(in.available()); //指定該Object被下載時的網頁的緩存行爲 metadata.setCacheControl("no-cache"); //指定該Object下設置Header metadata.setHeader("Pragma", "no-cache"); //指定該Object被下載時的內容編碼格式 metadata.setContentEncoding("utf-8"); //文件的MIME,定義文件的類型及網頁編碼,決定瀏覽器將以什麼形式、什麼編碼讀取文件。若是用戶沒有指定則根據Key或文件名的擴展名生成, //若是沒有擴展名則填默認值application/octet-stream metadata.setContentType(getContentType(fileName)); //指定該Object被下載時的名稱(指示MINME用戶代理如何顯示附加的文件,打開或下載,及文件名稱) metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte."); //上傳文件 (上傳文件流的形式) PutObjectResult putResult = ossClient.putObject(BACKET_NAME, FOLDER + fileName, in, metadata); resultStr = putResult.getETag(); logger.info("上傳阿里雲OSS服務器成功." +resultStr); //解析結果 } catch (Exception e) { e.printStackTrace(); logger.error("上傳阿里雲OSS服務器異常." + e.getMessage(), e); } return BACKET_NAME+"."+ENDPOINT+"/"+FOLDER + fileName; } /** * 經過文件名判斷並獲取OSS服務文件上傳時文件的contentType * @param fileName 文件名 * @return 文件的contentType */ 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"; } if(".html".equalsIgnoreCase(fileExtension)) { return "text/html"; } if(".txt".equalsIgnoreCase(fileExtension)) { return "text/plain"; } if(".vsd".equalsIgnoreCase(fileExtension)) { return "application/vnd.visio"; } if(".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) { return "application/vnd.ms-powerpoint"; } if(".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) { return "application/msword"; } if(".xml".equalsIgnoreCase(fileExtension)) { return "text/xml"; } //默認返回類型 return "image/jpeg"; } /** * 修改文件名 * @param fileName 文件名 * @return 文件的新名稱 */ public static String getfileName(String fileName){ String fileType = fileName.substring(fileName.lastIndexOf("."), fileName.length()); String name = IdGen.uuid()+fileType; System.out.println(fileName+"----"+name); return name; } //測試 public static void main(String[] args) throws Exception { /* //上傳文件 String f="D:\\tu\\21107201_230758751000-2.jpg"; File file=new File(f); try{ String md5key = AliyunOSSClientUtil.uploadObject2OSS(file); System.out.println("上傳後的文件MD5數字惟一簽名:" + md5key); }catch(Exception e){ e.printStackTrace(); }*/ //初始化OSSClient OSSClient ossClient=AliyunOSSClientUtil.getOSSClient(); //上傳文件 String files="D:\\tu\\w1.png,D:\\tu\\w2.png,D:\\tu\\w3.png,D:\\tu\\w4.png,D:\\tu\\w5.png"; String[] file=files.split(","); for(String filename:file){ //System.out.println("filename:"+filename); File filess=new File(filename); String md5key = AliyunOSSClientUtil.uploadObject2OSS(filess); System.out.println("文件地址:" + md5key); //上傳後的文件MD5數字惟一簽名:40F4131427068E08451D37F02021473A } } }
3. src/webapp/返回頂部 |
<%@ tag language="java" pageEncoding="UTF-8"%> <%@ include file="/webpage/include/taglib.jsp"%> <%@ attribute name="name" type="java.lang.String" required="true" description="輸入名稱"%> <%@ attribute name="files" type="java.util.List" required="false" description="文件集合"%> <style> .img-div { position: relative; display: inline-block; } .img-p{ position: absolute; background: url("${ctxStatic}/common/img/close1.png"); top: 1px; right: 11px; z-index: 100; width: 25px; height: 25px; background-size: 100%; background-repeat: no-repeat; } </style> <div class="lightBoxGallery"> <!-- 刪除的delIds,後臺接收並刪除響應的資源 --> <input type="hidden" name="delIds" id="delIds" value=""> <i class="layui-icon" style="font-size: 30px; color: #009688;cursor: pointer;" id="iconFile">+</i> <input id="uploadFile1" type="file" multiple="multiple" onchange="upload.showImg(event)" name="${name}" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" style="display: none"/> <div id="filecontent"> <c:forEach items="${files}" var="file"> <div class="img-div"> <p class="img-p" style="right:3px!important" onclick="upload.delImg(this,'${file.url}')"></p> <img src="${file.url}" style="height: 100px;width: 100px;"> </div> </c:forEach> </div> </div> <script type="text/javascript"> ;var upload = {};!function(){ var _numIndex = 1; $("#iconFile").click(function () { debugger $("#uploadFile"+ _numIndex).click(); }); /* $("#uploadFile"+ _numIndex).on("change",function(e){ debugger var files = e.target.files; if(files.length > 0){ $.each(files,function(index,file){ var img = new Image(), url = img.src = URL.createObjectURL(file); img.width = "100"; img.height = "100"; img.style.paddingRight='10px'; img.style.paddingBottom='5px'; var _div = document.createElement("div"); _div.setAttribute("class","img-div"); var node = document.createElement("p"); node.setAttribute("class","img-p") node.onclick=function(){ delImg(this) } _div.appendChild(node); img.onload = function() { URL.revokeObjectURL(url) _div.appendChild(img) $('#filecontent').append(_div) } }); debugger //建立inputFile +1 var dom = $("#uploadFile" + _numIndex).clone().attr("id","uploadFile"+ (++_numIndex)); $("#filecontent").before(dom); } }); */ upload.delImg = function(args,ids){ debugger $(args).parents(".img-div").remove(); if(ids != null && ids != ""){ ids = ids.substring(ids.indexOf("image")); } var val = $("#delIds").val(); if(val != ""){ val += ","+ ids; $("#delIds").val(val); }else{ $("#delIds").val(ids); } } upload.showImg = function(e){ e = e ||event; var files = e.target.files; if(files.length > 0){ $.each(files,function(index,file){ var img = new Image(), url = img.src = URL.createObjectURL(file); img.width = "100"; img.height = "100"; img.style.paddingRight='10px'; img.style.paddingBottom='5px'; var _div = document.createElement("div"); _div.setAttribute("class","img-div"); var node = document.createElement("p"); node.setAttribute("class","img-p") node.onclick=function(){ upload.delImg(this) } _div.appendChild(node); img.onload = function() { URL.revokeObjectURL(url) _div.appendChild(img) $('#filecontent').append(_div) } }); debugger //建立inputFile +1 var input = document.createElement("input"); input.setAttribute("id","uploadFile"+ (++_numIndex)); input.setAttribute("type","file"); input.setAttribute("multiple","multiple"); input.setAttribute("name","${name}"); input.style.display = "none"; input.onchange=function(e){ upload.showImg(e); } $("#filecontent").before(input); } } }(window); </script>
<%@ tag language="java" pageEncoding="UTF-8"%> <%@ include file="/webpage/include/taglib.jsp"%> <%@ attribute name="name" type="java.lang.String" required="true" description="輸入名稱"%> <%@ attribute name="accept" type="java.lang.String" required="false" description="文件類型"%> <%@ attribute name="echo" type="java.lang.String" required="false" description="文件回顯"%> <%@ attribute name="index" type="java.lang.String" required="false" description="下標"%> <style> .img-div { position: relative; display: inline-block; } .img-p{ position: absolute; background: url("${ctxStatic}/common/img/close1.png"); top: 1px; right: 11px; z-index: 100; width: 25px; height: 25px; background-size: 100%; background-repeat: no-repeat; } </style> <div class="lightBoxGallery"> <!-- 刪除的delIds,後臺接收並刪除響應的資源 --> <input type="hidden" name="delIds" id="delIds" value=""> <i class="layui-icon iconFile" style="font-size: 30px; color: #009688;cursor: pointer;" id="iconFile${index}">+</i> <input class="uploadFile" id="uploadFile${index}" type="file" name="${name}" accept="${accept == null? 'image/gif,image/jpeg,image/jpg,image/png,image/svg':accept}" style="display: none"/> <div id="filecontent" class="${index}"> <c:if test="${ not empty echo}"> <div class="img-div"> <p class="img-p" style="right:3px!important" onclick="singleUpload.delImg(this,'${echo}')"></p> <img src="${echo}" style="height: 100px;width: 100px;"> </div> </c:if> </div> </div> <script type="text/javascript"> ;var singleUpload = {};!function(){ $(".iconFile").unbind("click").click(function () { $(this).next(".uploadFile").click(); }); $(".uploadFile").unbind("change").on("change",function(e){ debugger var $this = $(this); var files = e.target.files; if(files.length > 0){ $.each(files,function(index,file){ if(file.type.indexOf("video") > -1){ $this.next("#filecontent").empty().append(file.name); }else if(file.type.indexOf("pdf") > -1){ $this.next("#filecontent").empty().append(file.name); }else{ var img = new Image(), url = img.src = URL.createObjectURL(file); img.width = "100"; img.height = "100"; img.style.paddingRight='10px'; img.style.paddingBottom='5px'; var _div = document.createElement("div"); _div.setAttribute("class","img-div"); var node = document.createElement("p"); node.setAttribute("class","img-p") node.onclick=function(){ singleUpload.delImg(this) } _div.appendChild(node); img.onload = function() { URL.revokeObjectURL(url) _div.appendChild(img) $this.next("#filecontent").empty().append(_div) } } }); } }); singleUpload.delImg = function (args,ids){ $(args).parents(".img-div").remove(); if(ids != null && ids != ""){ ids = ids.substring(ids.indexOf("image")); var val = $(args).parents("#delIds").val(); ids = (val != null && val != "") ? (val + "," + ids) : ids; $(args).parents("#delIds").val(ids); } } }(); </script>
<%@ tag language="java" pageEncoding="UTF-8"%> <%@ include file="/webpage/include/taglib.jsp"%> <%@ attribute name="name" type="java.lang.String" required="true" description="輸入名稱"%> <%@ attribute name="accept" type="java.lang.String" required="false" description="文件類型"%> <%@ attribute name="echo" type="java.lang.String" required="false" description="文件回顯"%> <style> .img-div { position: relative; display: inline-block; } .img-p{ position: absolute; background: url("${ctxStatic}/common/img/close1.png"); top: 1px; right: 11px; z-index: 100; width: 25px; height: 25px; background-size: 100%; background-repeat: no-repeat; } </style> <div class="lightBoxGallery"> <!-- 刪除的delIds,後臺接收並刪除響應的資源 --> <input type="hidden" name="delIds" id="delIds" value=""> <i class="layui-icon" style="font-size: 30px; color: #009688;cursor: pointer;" id="iconFile">+</i> <input id="uploadFile" type="file" name="${name}" accept="${accept == null? 'image/gif,image/jpeg,image/jpg,image/png,image/svg':accept}" style="display: none"/> <div id="filecontent"> <c:if test="${ not empty echo}"> <div class="img-div"> <p class="img-p" style="right:3px!important" onclick="singleUpload.delImg(this,'${echo}')"></p> <img src="${echo}" style="height: 100px;width: 100px;"> </div> </c:if> </div> </div> <script type="text/javascript"> ;var singleUpload = {};!function(){ $("#iconFile").click(function () { $("#uploadFile").click(); }); $("#uploadFile").on("change",function(e){ var files = e.target.files; if(files.length > 0){ $.each(files,function(index,file){ var img = new Image(), url = img.src = URL.createObjectURL(file); img.width = "100"; img.height = "100"; img.style.paddingRight='10px'; img.style.paddingBottom='5px'; var _div = document.createElement("div"); _div.setAttribute("class","img-div"); var node = document.createElement("p"); node.setAttribute("class","img-p") node.onclick=function(){ singleUpload.delImg(this) } _div.appendChild(node); img.onload = function() { URL.revokeObjectURL(url) _div.appendChild(img) $('#filecontent').empty().append(_div) } }); } }); singleUpload.delImg = function (args,ids){ $(args).parents(".img-div").remove(); if(ids != null && ids != ""){ ids = ids.substring(ids.indexOf("image")); var val = $("#delIds").val(); ids = (val != null && val != "") ? (val + "," + ids) : ids; $("#delIds").val(ids); } } }(); </script>
4.返回頂部 |
ExtEntity.Javajavascript
java/com/manager/util/modules/html
system/service/systemSlideService.javajava
@Transactional(readOnly = false) public void save(SystemSlide systemSlide) { if(!systemSlide.getSingle().isEmpty()){ //獲取文件 MultipartFile single = systemSlide.getSingle(); String name = single.getOriginalFilename();//文件名字 String key; try { key = AliyunOSSClientUtil.uploadObject2OSS(single.getInputStream(),name,single.getSize()); systemSlide.setSrc(key); } catch (IOException e) { e.printStackTrace(); } } super.save(systemSlide); }
5.返回頂部 |
6.返回頂部 |
![]() |
做者:ylbtech 出處:http://ylbtech.cnblogs.com/ 本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。 |