oss图片服务器的使用

oss图片服务器的使用

  • 官方文档
  • 说明
  • 基本使用
    • 添加依赖
    • 连接配置
    • 图片上传

官方文档

说明

代码中有些为封装过的类,因太过匆忙没有摘除,不便展示,请注意摘除

基本使用

添加依赖

<ali-oss.version>3.4.2</ali-oss.version>

<!-- https://mvnrepository.com/artifact/com.aliyun.oss/aliyun-sdk-oss -->
<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>${
     ali-oss.version}</version>
</dependency>

连接配置

    //EndPoint的为地区服务节点——以杭州为例
    private static final String END_POINT = "http://oss-cn-hangzhou.aliyuncs.com";

    //阿里云主账号AccessKey拥有所有API的访问权限,风险很高。建议常见并使用RA账号进行API访问或日常运维,请登录https://ram.console.aliyun.com创建RAM账号
    private static final String ACCESS_KEY_ID = "";//账号
    private static final String ACCESS_KEY_SECRET = "";//密码
    private static final String BUCKET_NAME = "";//存储空间
    private static final String OBJECT_PATH = "";//图片路径

    //URL有效时间100年——oss私有读写情况下没有恒定有效的URL
    private static final int EXPIRES = 100;

图片上传

OssUtil.java

/**
 * 图片上传并获取URL
 * @param fileName 图片路径
 * @param img     图片本体
 * @return
 */
public static String uploadImg(String fileName, InputStream img) throws Exception{
     
    String objectName = OBJECT_PATH + fileName;
    String path;
    //建立连接
    OSS ossClient = new OSSClientBuilder().build(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
    try {
     
        //上传图片——存储空间、文件路径、文件本体
        PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, objectName, img);
        ossClient.putObject(putObjectRequest);
        //获取图片Url
        path = ossClient.generatePresignedUrl(BUCKET_NAME, objectName, dateAfter(new Date(), EXPIRES, Calendar.YEAR)).toString();
    } catch (Exception e){
     
        throw e;
    } finally {
     
    	 //关闭连接
        ossClient.shutdown();
    }
    return path;
}


/**
 * 设定URL有效时间
 * @param origDate 基准时间
 * @param amount   基准日期
 * @param timeUnit 时间单位,此处为年
 * @return
 */
private static final Date dateAfter(Date origDate, int amount, int timeUnit) {
     
    //返回一个Calendar对象,其日历字段已使用当前日期和时间进行初始化
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(origDate);
    calendar.add(timeUnit, amount);
    return calendar.getTime();
}

ImgController.java

@ApiOperation("添加图片")
@PostMapping("/addImg")
@ResponseBody
public Message addPluImg(@RequestParam Long pluId, MultipartFile img) throws Exception {
     
    if(img.isEmpty()) {
     
    	//防止图片重名的问题,同时保存图片名,方便删除服务器上的图片
        String imgName = IdWorkerUtils.getInstance().randomUUID() + img.getOriginalFilename().split(".")[1];
        String pluImgUrl = OssUtil.uploadImg(imgName, img.getInputStream());
        if(!pluImgUrl.isEmpty()) {
     
        	//向数据库中插入
            iPluImgService.addPluImg(pluId, pluImgUrl, imgName);
            return new Message().ok(200, "添加图片成功").addData("treeNode", pluImgUrl);
        }
    }
    return new Message().error(400, "图片上传失败");
}

致谢:@Artemis迷

你可能感兴趣的:(编程生活,java,springCloud,oss)