java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS
生活随笔
收集整理的這篇文章主要介紹了
java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
繼續上一章文章,這次要操作的是,瀏覽器請求服務要到簽名后直傳給OSS對象存儲。
1、寫好服務端的方法,傳給前臺相應的密鑰
@Resource OSSClient ossClient; @Value("${spring.cloud.alicloud.oss.endpoint}") private String endpoint; @Value("${spring.cloud.alicloud.oss.bucket}") private String bucket; @Value("${spring.cloud.alicloud.access-key}") private String accessId; @RequestMapping("/oss/policy") public Map<String, String> policy(){ String host = "https://" + bucket + "." + endpoint; // host的格式為 bucketname.endpoint // callbackUrl為 上傳回調服務器的URL,請將下面的IP和Port配置為您自己的真實信息。// String callbackUrl = "http://88.88.88.88:8888"; String format = new SimpleDateFormat().format(new Date()); String dir = format+"/"; // 用戶上傳文件時指定的前綴。 Map<String, String>respMap =null; try { long expireTime = 30; long expireEndTime = System.currentTimeMillis() + expireTime * 1000; Date expiration = new Date(expireEndTime); // PostObject請求最大可支持的文件大小為5 GB,即CONTENT_LENGTH_RANGE為5*1024*1024*1024。 PolicyConditions policyConds = new PolicyConditions(); policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000); policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir); String postPolicy = ossClient.generatePostPolicy(expiration, policyConds); byte[] binaryData = postPolicy.getBytes("utf-8"); String encodedPolicy = BinaryUtil.toBase64String(binaryData); String postSignature = ossClient.calculatePostSignature(postPolicy); respMap = new LinkedHashMap<String, String>(); respMap.put("accessid", accessId); respMap.put("policy", encodedPolicy); respMap.put("signature", postSignature); respMap.put("dir", dir); respMap.put("host", host); respMap.put("expire", String.valueOf(expireEndTime / 1000)); // respMap.put("expire", formatISO8601Date(expiration)); } catch (Exception e) { // Assert.fail(e.getMessage()); System.out.println(e.getMessage()); } finally { ossClient.shutdown(); } return respMap; }目前此方法已經成功。
2、接下來配置我們的網關gateway,使它的前綴要統一,比如:127.0.0.1:88/api/phirdparty/oss/policy這個路徑,那就開始操作吧~~
spring: cloud: gateway: routes: - id: third_party_route #lb俗稱負載均衡(loadBlance) uri: lb://dadamall-third-party #斷言 predicates: - Path=/api/thirdparty/** #能夠重寫路徑的地址 或是加 或是減的 filters: - RewritePath=/api/thirdparty/(?/?.*),/$\{segment}3、接下來開始前端調,在使用第三方組件引用的時候需要先引包
??import?SingleUpload?from?"@/components/upload/singleUpload";引包之后還有說明一下需要用那些組件
export default {????components:{SingleUpload}, }配置好之后可以使用自定義的標簽了
<single-upload v-model="dataForm.logo">single-upload>4、最后會出現403請求跨域問題,該問題是阿里云OSS對象存儲的跨域問題需要自己配置。
5、最后上成功圖一張~~
以上是我的個人筆記,探索未知密寶,記錄學習筆記,分享有趣的故事,歡迎大家來訪!
總結
以上是生活随笔為你收集整理的java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tvar julia pca_景德镇品种
- 下一篇: 电脑卡顿不流畅怎么解决_如何解决因电脑内