阿里云OSS实现头像上传

目录结构:
在这里插入图片描述
application.yml

server:
  port: 8002
spring:
  application:
    name: service-oss
  profiles:
    active: dev

aliyun:
  oss:
    file:
      endpoint: oss-cn-beijing.aliyuncs.com
      keyid: LTAI4G8q7nBEsUb1NxXC
      keysecret: 3FEJ5vh5EttqiiLdviC1dVjuvU
      #bucket可以在控制台创建也可以在代码中创建
      bucketname: edu-guli-study

ConstantPropertiesUtils:(用于注入配置文件中的阿里云配置信息)

@Component //实现InitializingBean接口可以执行执行赋值后的一些逻辑(由于属性是private的)
public class ConstantPropertiesUtils 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 ENDPOINT;
    public static String KEYID;
    public static String KEYSECRET;
    public static String BUCKETNAME;


    @Override
    public void afterPropertiesSet() throws Exception {
        ENDPOINT = endpoint;
        KEYID = keyId;
        KEYSECRET = keySecret;
        BUCKETNAME = bucketName;
    }
}

OssApplication:

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@ComponentScan(basePackages = {"com.coderkun"}) //为了swagger扫描到该包下的Controller
public class OssApplication {
    public static void main(String[] args) {
        SpringApplication.run(OssApplication.class,args);
    }
}

OSSController:

@RestController
@Api(description = "oss文件上传")
@RequestMapping("/eduoss/fileoss")
@CrossOrigin
public class OssController {

    @Autowired
    private OssService ossService;

    //上传头像方法
    @PostMapping
    public R uploadOssFile(MultipartFile file){
        String url = ossService.uploadOssFileAvatar(file);
        return R.ok().data("url",url);
    }
}

OssService:

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

OssServiceImpl:

@Service
public class OssServiceImpl implements OssService {
    @Override
    public String uploadOssFileAvatar(MultipartFile file) {
        // Endpoint以杭州为例,其它Region请按实际情况填写。
        String endpoint = ConstantPropertiesUtils.ENDPOINT;
        // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
        String accessKeyId = ConstantPropertiesUtils.KEYID;
        String accessKeySecret = ConstantPropertiesUtils.KEYSECRET;
        String bucketName = ConstantPropertiesUtils.BUCKETNAME;


        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

            // 上传文件流。
            InputStream inputStream = file.getInputStream();

            //获取文件名称
            String fileName = file.getOriginalFilename();
            //1.由于文件名重复会覆盖,生成随机文件名
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            fileName = uuid + fileName;
            //2.把文件按照日期分类
            String datePath = new DateTime().toString("yyyy/MM/dd");
            fileName = datePath + "/" + fileName; //2020/6/4/dafdf.jpg

            //第二个参数:上传到oss的文件路径和文件名称  /aa/bb1.jpg
            ossClient.putObject(bucketName,fileName, inputStream);

            // 关闭OSSClient。
            ossClient.shutdown();

            //把上传之后oss返回的文件url返回()
            //url格式:https://edu-guli-study.oss-cn-beijing.aliyuncs.com/%25U%7EHW%2502P2OH6FXR%29%5B8%60T2A.png
            String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
            return url;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

欢迎关注公众号Java技术大本营,会不定期分享BAT面试资料等福利。

在这里插入图片描述


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Alibaba提供了一个很好用的阿里云OSS客户端工具:`aliyun-sdk-oss-spring-boot-starter`,借助它我们可以很方便地实现视频上,下面是一个简单的示例: 1. 添加依赖 首先需要在`pom.xml`文件中添加以下依赖: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>aliyun-sdk-oss-spring-boot-starter</artifactId> <version>${aliyun.oss.version}</version> </dependency> ``` 2. 配置OSS 在`application.yml`中添加以下配置: ```yaml aliyun: oss: endpoint: oss-cn-hangzhou.aliyuncs.com access-key: your-access-key secret-key: your-secret-key bucket-name: your-bucket-name ``` 其中,`endpoint`是OSS服务的访问域名,`access-key`和`secret-key`是阿里云账号的访问密钥,`bucket-name`是要上的目标存储桶名称。 3. 实现逻辑 ```java @Service public class VideoService { @Autowired private OSS ossClient; public void uploadVideo(String objectName, InputStream inputStream) { ossClient.putObject("your-bucket-name", objectName, inputStream); } } ``` 在`VideoService`中,我们注入了`OSS`客户端,然后实现了一个`uploadVideo`方法,用于将视频文件上到指定的OSS存储桶中。该方法接收两个参数,一个是上文件的名称,另一个是文件的输入流。在方法中,我们调用`putObject`方法将文件上OSS中。 4. 调用上接口 最后,在Controller中,我们可以定义一个上接口,用于接收上请求: ```java @RestController public class VideoController { @Autowired private VideoService videoService; @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) throws IOException { videoService.uploadVideo(file.getOriginalFilename(), file.getInputStream()); return "success"; } } ``` 在`VideoController`中,我们定义了一个`upload`接口,用于接收上请求。接收到请求后,我们调用`VideoService`中的`uploadVideo`方法将文件上OSS中。 这样,我们就完成了一个简单的视频上功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值