开通“对象存储OSS”服务 (1)申请阿里云账号 (2)实名认证 (3)开通“对象存储OSS”服务 (4)进入管理控制台 、使用oss存储,先创建Bucket,在生成自己的AccessKey ,创建Bucket 选择:标准存储、公共读、不开通
项目中创建service_oss模块,引入依赖
com.aliyun.oss aliyun-sdk-ossjoda-time joda-time
配置文件
#服务端口 server.port=8205 #服务名 spring.application.name=service-oss #nacos服务器地址 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8888 #环境设置:dev、test、prod spring.profiles.active=dev #上传文件大小 spring.servlet.multipart.max-file-size=1024MB spring.servlet.multipart.max-request-size=1024MB #阿里云 OSS #不同的服务器,地址不同 aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs.com #创建的AccessKey aliyun.oss.file.keyid=xxxxxxxxx aliyun.oss.file.keysecret=xxxxxxx #刚刚创建的bucket名称 aliyun.oss.file.bucketname=lzq01
创建启动类
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) @ComponentScan(basePackages = {"com.lzq"}) public class OssApplication { public static void main(String[] args) { SpringApplication.run(OssApplication.class, args); } }
创建工具类读取配置文件中内容
@Component //@PropertySource("classpath:application.properties") public class ConstantPropertiesUtil implements InitializingBean { @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_POINT; public static String ACCESS_KEY_ID; public static String ACCESS_KEY_SECRET; public static String BUCKET_NAME; @Override public void afterPropertiesSet() throws Exception { END_POINT = endpoint; ACCESS_KEY_ID = keyId; ACCESS_KEY_SECRET = keySecret; BUCKET_NAME = bucketName; } }
控制层
@Api(description="阿里云文件管理") @RestController @RequestMapping("/admin/oss/file") public class FileUploadController { @Autowired private FileService fileService; @ApiOperation(value = "文件上传") @PostMapping("upload") public R upload( @ApiParam(name = "file", value = "文件", required = true) @RequestParam("file") MultipartFile file) { //返回上传后阿里云路径 String uploadUrl = fileService.upload(file); return R.ok().message("文件上传成功").data("url", uploadUrl); } }
service,文件上传并实现安日期创建文件夹分组
@Service public class FileServiceImpl implements FileService{ @Override public String upload(MultipartFile file) { String endpoint = ConstantPropertiesUtil.END_POINT; String accessKeyId = ConstantPropertiesUtil.ACCESS_KEY_ID; String accessKeySecret = ConstantPropertiesUtil.ACCESS_KEY_SECRET; String bucketName = ConstantPropertiesUtil.BUCKET_NAME; try { // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId,accessKeySecret); // 上传文件流。 InputStream inputStream = file.getInputStream(); //获取实际名称 String fileName = file.getOriginalFilename(); //生成随机唯一值,使用uuid,添加到文件名称里面 String uuid = UUID.randomUUID().toString().replaceAll("-",""); fileName = uuid+fileName; //按照当前日期,创建文件夹,上传到创建文件夹里面 String timeUrl = new DateTime().toString("yyyy/MM/dd"); fileName = timeUrl+"/"+fileName; //调用方法实现上传 ossClient.putObject(bucketName, fileName, inputStream); // 关闭OSSClient。 ossClient.shutdown(); //上传之后文件路径 // https://lzq01.oss-cn-beijing.aliyuncs.com/01.jpg String url = "https://"+bucketName+"."+endpoint+"/"+fileName; //返回 return url; } catch (IOException e) { e.printStackTrace(); return null; } } }
用swagger测试即可
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)