1、登陆阿里云官网登陆控制台搜索oss
点击bucket列表
创建一个bucket
填写bucket桶名称,选定地域等
创建bucket成功后创建公钥和私钥
创建公钥和私钥需要短信验证按照提示操作即可
创建完成保存公钥和私钥也可在AccessKey中短信验证查看
在oss主页右下方点击开发者指南继续点击左下角在文档中心中打开
继续点击sdk示例
点击Java
安装skd复制下面依赖添加的项目pom文件中刷新maven。
复制sdk代码
文件上传到本地的代码如图所示:
修改为阿里云oss文件上传:
代码如下:
@Override
public Result insetRecord(VisitsRcodeDto visitsRecordDto, MultipartFile multipartFile) {
VisitsRecord visitsRecord = new VisitsRecord();
String url = "";
log.info("员工信息: [{}]", visitsRecordDto.toString());
if (multipartFile != null) {
MultipartFile file = multipartFile;
log.info("文件名: [{}]", file.getOriginalFilename());
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = AliConfig.END_POINT;
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = AliConfig.ACCESS_KEY_ID;
String accessKeySecret = AliConfig.ACCESS_KEY_SECRET;
String bucketName = AliConfig.BUCKET_NAME;
String folder = AliConfig.FOLDER;
try {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
InputStream inputStream = file.getInputStream();
//获取文件真实名称
String originalFilename = file.getOriginalFilename();
//重命名,防止相同文件出现覆盖
//生成的f4f2e1a3-391a-4d5a-9438-0c9f5d27708c 需要替换成 f4f2e1a3391a4d5a94380c9f5d27708c
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
//新的文件名
originalFilename = uuid + originalFilename;
//2、把文件按照日期进行分类
String datePath = new DateTime().toString("yyyy/MM/dd");
//拼接
originalFilename = folder + "/" + datePath + "/" + originalFilename;
// oss实现上传文件
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType(getcontentType(originalFilename.substring(originalFilename.lastIndexOf("."))));
ossClient.putObject(bucketName, originalFilename, inputStream,objectMetadata);
// 关闭OSSClient
ossClient.shutdown();
//拼接url
url = "https://" + bucketName + "." + endpoint + "/" + originalFilename;
} catch (Exception e) {
e.printStackTrace();
}
}
创建一个配置类ApiConfig:
@Component
@PropertySource(value = "classpath:application.yml") //指定配置文件的位置
public class AliConfig implements InitializingBean {
/**
* 对应公网endpoint地址
*/
@Value("${aliyun.oss.file.endpoint}")
private String endpoint;
/**
* AccessKeyId
*/
@Value("${aliyun.oss.file.accessKeyId}")
private String accessKeyId;
/**
* AccessKeySecret
*/
@Value("${aliyun.oss.file.accessKeySecret}")
private String accessKeySecret;
/**
* Bucket名称
*/
@Value("${aliyun.oss.file.bucketName}")
private String bucketName;
/**
* 上传文件夹路径
*/
@Value("${aliyun.oss.file.folder}")
private String folder;
public static String END_POINT;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String BUCKET_NAME;
public static String FOLDER;
@Override
public void afterPropertiesSet() throws Exception {
END_POINT = endpoint;
ACCESS_KEY_ID = accessKeyId;
ACCESS_KEY_SECRET = accessKeySecret;
BUCKET_NAME = bucketName;
FOLDER = folder;
}
编写yml文件:
aliyun:
oss:
file:
endpoint: oss-cn-shenzhen.aliyuncs.com # 对应公网endpoint地址 例如实例为深圳
accessKeyId: 你的公钥
accessKeySecret: 你的私钥
bucketName: 你创建的bucket名称
folder: active #保存文件夹路径可以自己命名
编写一个ContentType类,不然点击链接默认是下载不可以在线查看:
public static String getcontentType(String FilenameExtension) {
if (FilenameExtension.equalsIgnoreCase(".bmp")) {
return "image/bmp";
}
if (FilenameExtension.equalsIgnoreCase(".gif")) {
return "image/gif";
}
if (FilenameExtension.equalsIgnoreCase(".jpeg") ||
FilenameExtension.equalsIgnoreCase(".jpg") ||
FilenameExtension.equalsIgnoreCase(".png")) {
return "image/jpg";
}
if (FilenameExtension.equalsIgnoreCase(".html")) {
return "text/html";
}
if (FilenameExtension.equalsIgnoreCase(".txt")) {
return "text/plain";
}
if (FilenameExtension.equalsIgnoreCase(".vsd")) {
return "application/vnd.visio";
}
if (FilenameExtension.equalsIgnoreCase(".pdf")) {
return "application/pdf";
}
if (FilenameExtension.equalsIgnoreCase(".pptx") ||
FilenameExtension.equalsIgnoreCase(".ppt")) {
return "application/vnd.ms-powerpoint";
}
if (FilenameExtension.equalsIgnoreCase(".docx") ||
FilenameExtension.equalsIgnoreCase(".doc")) {
return "application/msword";
}
if (FilenameExtension.equalsIgnoreCase(".xml")) {
return "text/xml";
}
return "image/jpg";
}
测试结果:按日备份文件如图所示
按照上述操作就可以引入oss存储对象sdk实现文件上传和在线查看了,赶快动起来吧!!