太原网站建设价格套餐,360做网站吗,微信小程序开发教程2021,wordpress显示标签一、何为阿里云OSS
全名叫“阿里云对象存储OSS”#xff0c;就是云存储#xff0c;前端发文件到服务器#xff0c;服务器不用再存到本地磁盘#xff0c;可以直接传给“阿里云OSS”#xff0c;存在网上。 二、怎么用
大体逻辑#xff1a; 细分的话就是#xff1a; 1、准…一、何为阿里云OSS
全名叫“阿里云对象存储OSS”就是云存储前端发文件到服务器服务器不用再存到本地磁盘可以直接传给“阿里云OSS”存在网上。 二、怎么用
大体逻辑 细分的话就是 1、准备工作OSS开通
这一部分黑马程序员写的很详细我就直接cv他的教程了 1打开《阿里云-计算为了无法计算的价值》阿里云官网申请阿里云账号并完成实名认证。 2开通OSS 登录阿里云官网。 点击右上角的控制台。 将鼠标移至产品然后在输入框搜索 【对象存储 OSS】 找到并单击【对象存储 OSS】 打开 OSS 产品详情页面。 在 OSS 产品详情页中的单击立即开通。 3创建Bucket存储空间 开通服务后在OSS产品详情页面单击管理控制台直接进入OSS管理控制台界面。 您也可以单击位于官网首页右上方菜单栏的控制台进入阿里云管理控制台首页然后单 击左侧的对象存储 OSS菜单进入 阿里云登录 - 欢迎登录阿里云安全稳定的云计算服务平台 。 新建 Bucket 命名为 hmleadnews 读写权限为 公共读 3. OSS 快速入门 4获取Bucket信息以及【Access密钥】 要获取这几个很重要的信息 【Bucket名称】、 【Endpoint地域节点】、【 AccessKeyId】、【 AccessKeySecret】 然后在侧边栏的【Bucket列表】可以看到你创建的Bucket 就能看到我们要的第一个东西【 Bucket名称】 点击你这个【Bucket】仓库然后再点击【概览】 然后往下翻可以看到我们要的第二个东西【 Endpoint地域节点】 然后最后到右上角点击个人头像选中【AccessKey管理】 就可以获得我们最后要的两个东西【 AccessKeyId】、【 AccessKeySecret】 拿到之后【保存起来】不然的话就看不到了下次再要这个accessKey就作废了然后重新手机号验证获取一个新的【 AccessKeyId】和【 AccessKeySecret】 2、在test配置一个上传样例代码试一下
那么接下来就可以在代码里测试一下能不能用了
首先我们还要在【pom.xml】文件里在配置好【阿里云OSS的依赖】
!-- 阿里云OSS的依赖 --
dependencygroupIdcom.aliyun.oss/groupIdartifactIdaliyun-sdk-oss/artifactIdversion3.15.1/version
/dependency
如果你是java9以下的版本就不用做下一步操作如果是java9以上的在下面再配置这个依赖
!-- java9以上的版本还需要配置这个阿里云配置 --
dependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactIdversion2.3.1/version
/dependency
dependencygroupIdjavax.activation/groupIdartifactIdactivation/artifactIdversion1.1.1/version
/dependency
!-- no more than 2.3.3--
dependencygroupIdorg.glassfish.jaxb/groupIdartifactIdjaxb-runtime/artifactIdversion2.3.3/version
/dependency
然后开始在【test】目录下的【java】的【测试类】文件夹里加一个Demo类 然后把这段代码直接复制过去
因为黑马程序员里的教程是N年前的阿里云OSS更新了代码配置所以直接用我下面这个别用黑马程序员的资料代码我这是官方最新的
package com.czm.tliaswebmanagement;import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.File;public class Demo {public static void main(String[] args) throws Exception {/*** 基础配置连接服务并验证个人身份*/// Endpoint以华东1杭州为例其它Region请按实际情况填写。String endpoint https://oss-cn-hangzhou.aliyuncs.com;// 从环境变量中获取访问凭证。运行本代码示例之前请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。EnvironmentVariableCredentialsProvider credentialsProvider CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();// 填写Bucket名称例如examplebucket。String bucketName czm-goeasy-im;/*** 配置具体文件上传信息*/// 填写Object完整路径完整路径中不能包含Bucket名称例如exampledir/exampleobject.txt。String objectName 1.png;// 填写本地文件的完整路径例如D:\\localpath\\examplefile.txt。// 如果未指定本地路径则默认从示例程序所属项目对应本地路径中上传文件。String filePath C:\\Users\\岑梓铭\\Desktop\\c182dd874f2e4c4baaf1806d54bf9cfc.png;// 创建OSSClient实例。OSS ossClient new OSSClientBuilder().build(endpoint, credentialsProvider);try {// 创建PutObjectRequest对象。PutObjectRequest putObjectRequest new PutObjectRequest(bucketName, objectName, new File(filePath));// 如果需要上传时设置存储类型和访问权限请参考以下示例代码。// ObjectMetadata metadata new ObjectMetadata();// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());// metadata.setObjectAcl(CannedAccessControlList.Private);// putObjectRequest.setMetadata(metadata);// 上传文件。PutObjectResult result ossClient.putObject(putObjectRequest); } catch (OSSException oe) {System.out.println(Caught an OSSException, which means your request made it to OSS, but was rejected with an error response for some reason.);System.out.println(Error Message: oe.getErrorMessage());System.out.println(Error Code: oe.getErrorCode());System.out.println(Request ID: oe.getRequestId());System.out.println(Host ID: oe.getHostId());} catch (ClientException ce) {System.out.println(Caught an ClientException, which means the client encountered a serious internal problem while trying to communicate with OSS, such as not being able to access the network.);System.out.println(Error Message: ce.getMessage());} finally {if (ossClient ! null) {ossClient.shutdown();}}}
}
然后别急着运行我简单讲解一下你们要改的地方
1配【EndPoint节点】 首先在最上面的三句代码里第一句是【配置你与OSS的Bucket仓库连接的网址】专业点就是【EndPoint节点】 2配【AccessKeyId】和【AccessKeySecret】 因为黑马程序员里的教程是N年前的阿里云更新了OSS的配置所以阿里云OSS新的代码里没有直接配【AccessKeyId】和【AccessKeySecret】的代码取而代之的是用户直接在【系统变量】和【环境变量】里配置好【AccessKeyId】和【AccessKeySecret】 . 在【环境变量】加上两个变量变量名不能自定义只能是这两 【OSS_ACCESS_KEY_ID】【变量值】就是我们刚刚阿里云看的【AccessKeyId】 【OSS_ACCESS_KEY_SECRET】【变量值】就是我们刚刚阿里云看的【AccessKeySecret】 再在【系统变量】加上刚刚那两个变量变量名不能自定义只能是这两 【OSS_ACCESS_KEY_ID】、【OSS_ACCESS_KEY_SECRET】 最后在【系统变量】的【Path】里用“%变量%”的形式把那两个变量加进去 3配【Bucket名】 4配置【文件在本地的绝对路径】、文件上传之后在【阿里云OSS的Bucket库叫啥名字】 这个是文件上传之后在【阿里云OSS的Bucket库叫啥名字】 这个是【文件在本地的绝对路径】 写完这些之后因为我们刚刚配置了【系统变量】所以要【重启一下Idea】然后再启动spring boot工程 原文我说的是【重启电脑】感谢网友“智慧的牛”的更正 哦这里还有一点test的测试类可以不用运行整个spring boot工程只允许这一个类就行 然后就能看到你上传的文件了这个网址就是提供给前端访问图片的url 3、正式前后端利用阿里云OSS联调一下文件上传
文件上传这玩意因为其实没什么技术含量而且代码又臭又长的那么这里我们直接创建一个【工具类】复制我的代码然后要上传文件的地方就调用这个【工具类】帮我们上传即可
1首先在controller、service这些包的同级目录创建一个【utils】包创建一个【AliOSSUtils类】 2然后在这个类里直接复制粘贴下面的代码
package com.czm.tliaswebmanagement.utils;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.UUID;/*** 阿里云 OSS 工具类* 因为不属于controller层也不属于service层所以用component注解来存放到IOC容器里*/
Component
public class AliOSSUtils {private String endpoint 你自己的Bucket的EndPoint节点;private String accessKeyId 你自己的accessKeyId;private String accessKeySecret 你自己的accessKeySecret;private String bucketName 你自己的Bucket名字;/*** 实现上传图片到OSS*/public String upload(MultipartFile file) throws IOException {// 获取上传的文件的输入流InputStream inputStream file.getInputStream();// 避免文件覆盖String originalFilename file.getOriginalFilename();String fileName UUID.randomUUID().toString() originalFilename.substring(originalFilename.lastIndexOf(.));//上传文件到 OSSOSS ossClient new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);ossClient.putObject(bucketName, fileName, inputStream);//文件访问路径String url endpoint.split(//)[0] // bucketName . endpoint.split(//)[1] / fileName;// 关闭ossClientossClient.shutdown();return url;// 把上传到oss的路径返回}}
注意这里写你们自己的配置就跟上一个在test里的示例一样配置只不过这里多了要让你自己配置【AccessKeyId】和【AccessKeySecret】这两项而已 然后简单讲一下这些代码都是干啥 不用了解那么深反正也不会记以后都是直接用就行了
有一点记得用【Component】给它放到IOC容器以方便别的地方直接用 3接下来创建一个上传文件的controller接口调用AliOSSUtil工具类就行了 太简单了就不解释了注释都有只需要 1、在请求方法用MultipartFile接收文件参数 2、调用AliOSSUtiles工具类上传文件、并返回上传完后的图片地址 3、把地址返回给前端 package com.czm.tliaswebmanagement.controller;import com.czm.tliaswebmanagement.pojo.Result;
import com.czm.tliaswebmanagement.utils.AliOSSUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;
import java.util.UUID;Slf4j
RestController
public class UpLoadController {//注入依赖AliOSSUtiles工具类Autowiredprivate AliOSSUtils aliOSSUtils;PostMapping(/upload)public Result uplaod(MultipartFile image) throws IOException {log.info(上传过来的参数{}, image.getOriginalFilename());//调用阿里云OSS工具类【AliOSSUtiles】进行文件上传String url aliOSSUtils.upload(image);log.info(文件上传完成url是{}, url);return Result.success(url);}
}