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访问权限,风险很高。 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实现文件上传和在线查看了,赶快动起来吧!!