阿里云服务器使用+OSS的使用

一、ESC的使用

1.免费获取服务器(24岁以下都行)

1_1进入页面

进入阿里云网站 https://cn.aliyun.com/,然后搜索学生机进入获取界面。
  
  

1_2跟着流程走

1.注意:如果不想做新手训练营可以直接点下一步,最后给个评分就行了。

  

1_3领取新手福利

  

2.使用xshell连接服务器

2_1进入云服务管理控制台

  
  

2_2创建安全组

创建安全组的主要是为了配置内网入方向,作用是配置外界可访问服务器的端口号(未配置的端口则不允许访问)。
  
  
  

2_3查看服务器的公用地址和私有地址,并修改实例名称和密码

  
  

2_4在电脑上下载xshell

下载xshell教程链接

2_5尝试使用xshell连接服务器(使用xshell远程操作服务器,比图形界面更快)

1.注意主机是填写公网ip
2.阿里云服务器的默认用户名是root,密码是你写的哪个密码
如果还是连接不上,就重新登入服务器和重启一下xshell。
xshell远程连接服务器的教程

3.配置环境

宝塔安装环境

3_1打开需要打开的端口

3_2在xshell中执行命令,得到一个地址,这个地址就是宝塔管理面板

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

  
  
  

3_3在浏览器中访问宝塔Linux面板,并通过宝塔面板安装Linux的环境

宝塔面板能够监控我们
  
  
  




二、oss阿里云存储服务

1 准备工作:开通oss环境

1.1在阿里云上开通oss功能
1.2创建一个button,在后台操控oss

上传图片并下载测试

2使用java代码操作oss服务器

在公司我们并没有权限进去oss里面进行上传和删除图片的权限,而是通过使用java代码来操作图片。

2.1 创建密钥
2.2准备工作:查看oss官方学习路径

1.点击进入oss学习路径
2.点击查看oss的java模块
3.OSS项目的架构如下:

2.3 第一步导入依赖

明明是1.8版本的jdk,但是只有以下配置才能成功。

    <dependencies>
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>
    </dependencies>
2.4 第二步:进行application.properties配置
#服务端口
server.port=8002
#服务名
spring.application.name=service-oss

#环境设置:dev、test、prod
spring.profiles.active=dev

#阿里云 OSS
#不同的服务器,地址不同
aliyun.oss.file.endpoint=junjun11.oss-cn-beijing.aliyuncs.com
aliyun.oss.file.keyid=LTAI5tP1a4rEqGXpPKm1xwfS
aliyun.oss.file.keysecret=XKLO5M5fehSMCLt1fzsc3Rg2jzVKgF
#bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=junjun11
2.5第三步:启动类配置

只要添加了阿里云oss,就会在服务器开启的时候自动查找数据库,查找失败就会报错启动失败,所以使用要添加exclude来不加载数据库或者进行连接数据库的配置

//会自动加载数据库,使用要添加这个配置不加载数据库或者添加数据库配置。
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class OssApplication {
	public static void main(String[] args) {
		SpringApplication.run(OssApplication.class,args);
	}
}
2.6创建工具类:读取并保存配置文件中的内容

--------com/junjun/utils/ConstantPropertiesUtils.java

@Component
public class ConstantPropertiesUtils implements InitializingBean {

	//@Value能将内容传入到字段中去。而${}能将配置文件中的内容进行传值
	@Value("${aliyun.oss.file.endpoint}")
	private String endpoint;

	@Value("${aliyun.oss.file.keyid}")
	private String keyId;

	@Value("${aliyun.oss.file.keysecret}")
	private String keySecret;

	@Value("${aliyun.oss.file.bucketname}")
	private String bucketName;

	//定义常量
	public static String END_POIND;
	public static String ACCESS_KEY_ID;
	public static String ACCESS_KEY_SECRET;
	public static String BUCKET_NAME;
	
	//afterPropertiesSet()会在上面字段传值结束后自动调用
	@Override
	public void afterPropertiesSet() throws Exception {
		END_POIND=endpoint;
		ACCESS_KEY_ID=keyId;
		ACCESS_KEY_SECRET=keySecret;
		BUCKET_NAME=bucketName;
	}
}
2.7创建service层

---------com/junjun/service/OssService.java

public interface OssService {
	//上传头像到oss
	String uploadFileAvatar(MultipartFile file);
}

-------------com/junjun/service/impl/OssServiceImpl.java

package com.junjun.service.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.junjun.service.OssService;
import com.junjun.utils.ConstantPropertiesUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;

@Service
public class OssServiceImpl implements OssService {
	@Override//返回url地址!
	public String uploadFileAvatar(MultipartFile file) {
		//工具类传值。
		String endpoint = ConstantPropertiesUtils.END_POIND;//终端,如北京的终端:oss-cn-beijing.aliyuncs.com
		String bucketName = ConstantPropertiesUtils.BUCKET_NAME;//自己创建的Bucket的name,如:junjun11
		String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;//在oss的Access Key Secret功能可以获得
		String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;//在oss的Access Key Secret功能可以获得
		String fileName=file.getOriginalFilename();//需要上传的文件名,如%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81.png
// 创建OSSClient实例。
		OSS ossClient = null;
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
		InputStream inputStream = null;
		try {
			ossClient=new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//通过id和密码创建一个可以与OSS交互的OSSClient
			inputStream = file.getInputStream();//获取传入文件的输入流
			// 依次填写Bucket名称,和Object文件名称或完整路径(例如exampledir/exampleobject.txt)、上传的文件流。Object完整路径中不能包含Bucket名称。
			ossClient.putObject(bucketName, fileName, inputStream);
			//例如https://junjun11.oss-cn-beijing.aliyuncs.com/%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81.png
			String url="https://"+bucketName+"."+endpoint+"/"+fileName;
			return url;
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			// 关闭OSSClient。
			ossClient.shutdown();
		}
		return null;
	}
}

2.7创建Controller层:调用service

-----------com/junjun/controller/OssController.java

@RestController
@RequestMapping("/eduoss/fileoss")
@CrossOrigin//跨域问题
public class OssController {
	@Autowired
	OssService service;

	HashMap<String,Object> map=new HashMap<String,Object>();

	@PostMapping("/upload")
	//上传头像(传入一个文件),R中保存上传文件的url地址
	public R uploadOssFile(MultipartFile file){
		String url = service.uploadFileAvatar(file);//成功上传头像并且返回上传后的所在url地址
		map.put("url",url);
		return R.ok().setData(map);
	}
}
2.8测试:上传图片成功!

3问题解决

1.如果上传同一个名称的文件,将会将上一个覆盖:使用uuid来生成随机数
2.文件太杂,我们要实现按日期分文件夹保存的效果。
-------com/junjun/service/impl/OssServiceImpl.java

@Service
public class OssServiceImpl implements OssService {
	@Override//返回url地址!
	public String uploadFileAvatar(MultipartFile file) {
		//工具类传值。
		String endpoint = ConstantPropertiesUtils.END_POIND;//终端,如北京的终端:oss-cn-beijing.aliyuncs.com
		String bucketName = ConstantPropertiesUtils.BUCKET_NAME;//自己创建的Bucket的name,如:junjun11
		String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;//在oss的Access Key Secret功能可以获得
		String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;//在oss的Access Key Secret功能可以获得
		String fileName=file.getOriginalFilename();//需要上传的文件名,如%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81.png

		//***********************1.生成随机的uuid***********************
		String uuid= UUID.randomUUID().toString().replaceAll("-","");//把aw2d-dfgj-432l中间的-去掉

		// 创建OSSClient实例。
		OSS ossClient = null;
		// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
		InputStream inputStream = null;
		try {
			ossClient=new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//通过id和密码创建一个可以与OSS交互的OSSClient
			inputStream = file.getInputStream();//获取传入文件的输入流
			
			//****************2.把文件按日期进行分类***********************
			SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy/MM/dd");//确认格式.在oss中所有的xx/都会变成一个文件夹
			String date = dateFormat.format(new Date());//得到该格式的当前时间;2021/10/20
			
			//****************3.最终确定filename***********************
			String FinalFileName=date+"/"+uuid+fileName;
			// 依次填写Bucket名称,和Object文件名称或完整路径(例如exampledir/exampleobject.txt)、上传的文件流。Object完整路径中不能包含Bucket名称。
			ossClient.putObject(bucketName, FinalFileName, inputStream);
			//例如https://junjun11.oss-cn-beijing.aliyuncs.com/%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81.png
			String url="https://"+bucketName+"."+endpoint+"/"+FinalFileName;
			return url;
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			// 关闭OSSClient。
			ossClient.shutdown();
		}
		return null;
	}
}

【效果展示】:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值