阿里云OSS文件存储使用 阳光穿透心脏的1/2处 2022-11-13 00:50 299阅读 0赞 ### 一 账号开启服务 ### 1.支付宝开启oss服务 [https://oss.console.aliyun.com/bucket/oss-cn-shenzhen/wwl-image-bucket/overview][https_oss.console.aliyun.com_bucket_oss-cn-shenzhen_wwl-image-bucket_overview] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDkxODEy_size_16_color_FFFFFF_t_70][] 2.创建bucket ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDkxODEy_size_16_color_FFFFFF_t_70 1][] 3.创建accesskey [https://usercenter.console.aliyun.com/\#/manage/ak][https_usercenter.console.aliyun.com_manage_ak] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDkxODEy_size_16_color_FFFFFF_t_70 2][] ### 二 .API开发使用 ### [https://help.aliyun.com/document\_detail/52834.html?spm=a2c4g.11186623.6.931.2a5e53387iAk6W][https_help.aliyun.com_document_detail_52834.html_spm_a2c4g.11186623.6.931.2a5e53387iAk6W] 1.添加maven包 2.根据官方文旦就可以使用了。 ### 三 spring-cloud-alibaba 整合oss ### spring-cloud-alibaba 中文文档:[h][][ttps://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md][h] [https://github.com/alibaba/aliyun-spring-boot/blob/master/aliyun-spring-boot-samples/aliyun-oss-spring-boot-sample/README-zh.md\#%E6%8E%A5%E5%85%A5-oss][https_github.com_alibaba_aliyun-spring-boot_blob_master_aliyun-spring-boot-samples_aliyun-oss-spring-boot-sample_README-zh.md_E6_8E_A5_E5_85_A5-oss] 步骤: 1. 导入所需包 2. 配置文件配置信息 3. 使用 -------------------- 1.导入aliyun-oss-spring-boot-starter包如遇到unknown,导入如下代码 <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>aliyun-spring-boot-dependencies</artifactId> <version>1.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> 2.测试上传 @RunWith(SpringRunner.class) @SpringBootTest(classes = CmsApplication.class) public class OSSTest { @Autowired OSSClient ossClient; private static String bucketName = "wwl-image-bucket"; @Test public void saveFile() { // 上传文件流。 try { InputStream inputStream = new FileInputStream("C:\\Users\\Administrator\\Desktop\\个人\\微信图片_20210115180426.jpg"); ossClient.putObject(bucketName, "1082262.jpg", inputStream); // 关闭OSSClient。 ossClient.shutdown(); System.out.println("上传完成!!! "); } catch (FileNotFoundException e) { e.printStackTrace(); } } } ### 四 web端直传(服务端授权) ### 参考文档: [https://help.aliyun.com/document\_detail/31926.html?spm=a2c4g.11186623.6.1752.6eb76e02oWEJiF][https_help.aliyun.com_document_detail_31926.html_spm_a2c4g.11186623.6.1752.6eb76e02oWEJiF] [https://help.aliyun.com/document\_detail/91868.htm?spm=a2c4g.11186623.2.10.78597d9c9Exg8C\#concept-ahk-rfz-2fb][https_help.aliyun.com_document_detail_91868.htm_spm_a2c4g.11186623.2.10.78597d9c9Exg8C_concept-ahk-rfz-2fb] 1.编写授权接口 @RestController public class OSSController { @Value("${alibaba.cloud.oss.endpoint}") private String endpoint; @Value("${alibaba.cloud.access-key}") private String accessId; private static String bucket = "wwl-image-bucket"; @Autowired private OSS ossClient; @RequestMapping("/oss/policy") public Map<String, String> policy() { String host = "https://" + bucket + "." + endpoint; // host的格式为 bucketname.endpoint // callbackUrl为 上传回调服务器的URL,请将下面的IP和Port配置为您自己的真实信息。 // 用户上传文件时指定的前缀。 此处定义每天建立一个文件夹 String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); String dir = format + "/"; // 创建OSSClient实例。 Map<String, String> respMap = new LinkedHashMap<String, String>(); 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.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)); } catch (Exception e) { // Assert.fail(e.getMessage()); System.out.println(e.getMessage()); } finally { ossClient.shutdown(); } return respMap; } } 响应数据: {"accessid":"LTAI5tKmMBiEaRvb88JAid9Q","policy":"eyJleHBpcmF0aW9uIjoiMjAyMS0wMy0zMFQxMTozMzoxMC4wMDRaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA0ODU3NjAwMF0sWyJzdGFydHMtd2l0aCIsIiRrZXkiLCIyMDIxLTAzLTMwLyJdXX0=","signature":"RY0eFexHuyBxPWM7X2N2LhVysgs=","dir":"2021-03-30/","host":"https://wwl-image-bucket.https://oss-cn-shenzhen.aliyuncs.com","expire":"1617103990"} 配置完后记得阿里云跨域授权 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDkxODEy_size_16_color_FFFFFF_t_70 3][]![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDkxODEy_size_16_color_FFFFFF_t_70 4][] [https_oss.console.aliyun.com_bucket_oss-cn-shenzhen_wwl-image-bucket_overview]: https://oss.console.aliyun.com/bucket/oss-cn-shenzhen/wwl-image-bucket/overview [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDkxODEy_size_16_color_FFFFFF_t_70]: /images/20221022/96b58af2246641a0b265024fef305ef9.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDkxODEy_size_16_color_FFFFFF_t_70 1]: /images/20221022/9a92f55bed6540928bec0a509410794e.png [https_usercenter.console.aliyun.com_manage_ak]: https://usercenter.console.aliyun.com/#/manage/ak [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDkxODEy_size_16_color_FFFFFF_t_70 2]: /images/20221022/61969650cb5e4c6ab4aa92232b2c038b.png [https_help.aliyun.com_document_detail_52834.html_spm_a2c4g.11186623.6.931.2a5e53387iAk6W]: https://help.aliyun.com/document_detail/52834.html?spm=a2c4g.11186623.6.931.2a5e53387iAk6W [h]: https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md [https_github.com_alibaba_aliyun-spring-boot_blob_master_aliyun-spring-boot-samples_aliyun-oss-spring-boot-sample_README-zh.md_E6_8E_A5_E5_85_A5-oss]: https://github.com/alibaba/aliyun-spring-boot/blob/master/aliyun-spring-boot-samples/aliyun-oss-spring-boot-sample/README-zh.md#%E6%8E%A5%E5%85%A5-oss [https_help.aliyun.com_document_detail_31926.html_spm_a2c4g.11186623.6.1752.6eb76e02oWEJiF]: https://help.aliyun.com/document_detail/31926.html?spm=a2c4g.11186623.6.1752.6eb76e02oWEJiF [https_help.aliyun.com_document_detail_91868.htm_spm_a2c4g.11186623.2.10.78597d9c9Exg8C_concept-ahk-rfz-2fb]: https://help.aliyun.com/document_detail/91868.htm?spm=a2c4g.11186623.2.10.78597d9c9Exg8C#concept-ahk-rfz-2fb [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDkxODEy_size_16_color_FFFFFF_t_70 3]: https://img-blog.csdnimg.cn/20210330194749422.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDkxODEy,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDkxODEy_size_16_color_FFFFFF_t_70 4]: /images/20221022/82a23689a6484795af75d65166c7e00b.png
还没有评论,来说两句吧...