java 阿里云上传照片

获取对象

复制代码
   @Resource
    private ALiYunConfig aLiYunConfig;

代码配置类

复制代码
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 描述:
 *
 * @author zhaofeng
 * @date 2023-09-05
 */
@Data
@ConfigurationProperties(prefix = "aliyun")
@Component
public class ALiYunConfig {
    /**
     * 阿里云keyId
     */
    private String accessKey ;
    /**
     * 阿里云secret
     */
    private String accessSecret;
    /**
     * 阿里云secret
     */
    private String endpoint;
    /**
     * 阿里云oss上传节点
     */
    private String ossEndpoint;
    /**
     * 阿里云oss Bucket名称
     */
    private String ossBucketName;


}

yml配置 注意这些参数都是事先配置好的(也就是注册阿里云购买过的获取的参数)


代码controller层

复制代码
    /**
     * 用户上传图片接口
     *
     * @param file
     */
    @ApiOperation("用户上传图片接口")
    @PostMapping("uploadPicture")
    @ExcludeLogin
    public String uploadPicture(@RequestParam(name = "file") MultipartFile file) {
        return iPlatformPictureService.uploadPicture(file);
    }

代码service层

复制代码
   @Resource
    private ALiYunConfig aLiYunConfig;

    /**
     * 图片上传到阿里云
     *
     * @param file
     * @return
     */
    @Override
    public String uploadPicture(MultipartFile file) {
        //源文件名称
        String fileName = file.getOriginalFilename();
        //获取后缀
        String suffixName = fileName.contains(".") ? fileName.substring(fileName.lastIndexOf(".") + 1) : null;
        //校验图片格式
        if (StringUtils.isBlank(suffixName)) {
            throw new BusinessException(PlatformResultCode.PICTURE_ERROR);
        }
        List<String> suffix = Arrays.asList("PNG", "JPG", "JPEG");
        if (!suffix.contains(suffixName.toUpperCase())) {
            throw new BusinessException(PlatformResultCode.PICTURE_ERROR);
        }
        //校验图片大小  校验图片大小
        long size = file.getSize();
        int sizeKb = (int) ((size / 1024) + 1);
        //从缓存中获取图片大小的配置
        int configValue = platformConfigExport.getConfigInteger(PlatformConfigEnum.PICTURE_SIZE);
        if (sizeKb > configValue) {
            throw new BusinessException(PlatformResultCode.PICTURE_MAX, configValue / 1024);
        }
        //拼接文件夹以及文件名称
        String today = DateUtils.today();
        String name = today + "/" + UUIDUtils.getUUID() + "." + suffixName;
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = aLiYunConfig.getOssEndpoint();
        // 填写Bucket名称,例如examplebucket。
        String bucketName = aLiYunConfig.getOssBucketName();
        OSS ossClient = new OSSClientBuilder().build(endpoint, aLiYunConfig.getAccessKey(), aLiYunConfig.getAccessSecret());
        try {
            // 创建PutObjectRequest对象。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, name, file.getInputStream());
            // 上传文件
            PutObjectResult result = ossClient.putObject(putObjectRequest);
        } catch (Exception e) {
            log.error("PlatformPictureServiceImpl.uploadPicture; 用户上传图片失败,大小:{}Kb,", sizeKb, e);
            throw new BusinessException(PlatformResultCode.UPLOAD_PICTURE_ERROR);
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        //返回路径,该路径在浏览器访问可以下载
        return "https://" + aLiYunConfig.getOssBucketName() + "." + endpoint + File.separator + name;
    }
相关推荐
宵时待雨4 分钟前
C++笔记归纳13:map & set
开发语言·数据结构·c++·笔记·算法
xiangpanf6 分钟前
PHP与Vue:前后端技术深度对比
开发语言·vue.js·php
怀旧诚子1 小时前
timeshift之Fedora43设置,已在VM虚拟机验证,待真机验证。
java·服务器·数据库
1104.北光c°1 小时前
滑动窗口HotKey探测机制:让你的缓存TTL更智能
java·开发语言·笔记·程序人生·算法·滑动窗口·hotkey
for_ever_love__2 小时前
Objective-C学习 NSSet 和 NSMutableSet 功能详解
开发语言·学习·ios·objective-c
云原生指北4 小时前
GitHub Copilot SDK 入门:五分钟构建你的第一个 AI Agent
java
似水明俊德8 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
Leinwin8 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
薛定谔的悦8 小时前
MQTT通信协议业务层实现的完整开发流程
java·后端·mqtt·struts
enjoy嚣士9 小时前
springboot之Exel工具类
java·spring boot·后端·easyexcel·excel工具类