获取本地文件上传oss固定路径,并调用头像分割接口

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 以下案例演示将本地图片上传至oss固定路径下,并获取到图片的oss链接,最终通过此链接调用阿里云头像分割接口

Step By Step

1.调用准备

  • 开通oss,并创建bucket
  • 开通头像分割服务
  • 本地图片一张

image.png

2.添加依赖

<dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.15.0</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>imageseg20191230</artifactId>
            <version>1.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.13</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.79</version>
        </dependency>

3.java Code


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.aliyun.oss.*;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import com.aliyun.oss.model.PutObjectRequest;

import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
import com.google.gson.Gson;

import org.codehaus.jettison.json.JSONObject;

import java.io.File;
import java.util.Date;


public class Demo {

    public static com.aliyun.imageseg20191230.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config()
                // 您的 AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 您的 AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // 访问的域名
        config.endpoint = "imageseg.cn-shanghai.aliyuncs.com";
        return new com.aliyun.imageseg20191230.Client(config);
    }
    //此方法将接口返回的url处理了下,如果官方修复了问题,可以直接获取接口内容
    public static String detailFormat(String StringBody) throws Exception{

        String data = new JSONObject(StringBody).getString("data");
        String  elements = new JSONObject(data).getString("elements");
        JSONArray jsonArray = JSONArray.parseArray(elements);
        JSON jsonOne = jsonArray.getJSONObject(0);
        String jsonOneToString = jsonOne.toJSONString();
        JSONObject json = new JSONObject(jsonOneToString);
        String imageUrl = json.getString("imageURL");
        return imageUrl;

    }

    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-shanghai.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        String accessKeyId = "您的AK";
        String accessKeySecret = "您的SK";
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "bucket名字";
        String filePath= "本地图片";
        String filename = "(文件夹名字)将图片传入特定文件夹/"+filePath.substring(filePath.lastIndexOf("\\")+1);
        String objectName = filename;
        System.out.println(filename);

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        try {
            GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.PUT);
            // 设置签名URL过期时间,单位为毫秒。
            Date expiration = new Date(new Date().getTime() + 3600 * 1000);
            // 创建PutObjectRequest对象。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));

            // 上传文件。
            ossClient.putObject(putObjectRequest);
            System.out.println("上传成功");

            //获取上传图片的url
            String url = ossClient.generatePresignedUrl(bucketName,objectName, expiration).toString();
            System.out.println("oss获取的地址:"+url);

            //调用头像分割接口
            com.aliyun.imageseg20191230.Client client = Demo.createClient(accessKeyId, accessKeySecret);
            com.aliyun.imageseg20191230.models.SegmentHeadRequest segmentHeadRequest = new com.aliyun.imageseg20191230.models.SegmentHeadRequest()
                    .setImageURL(url);
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            try {
                // 复制代码运行请自行打印 API 的返回值
                com.aliyun.imageseg20191230.models.SegmentHeadResponse result = client.segmentHeadWithOptions(segmentHeadRequest, runtime);
                String body = new Gson().toJson(result.getBody());
                //接口返回的url有转义字符的问题,需要单独拿出来处理下
                System.out.println("接口返回的Body:"+body);
                String finalUrl = detailFormat(body);
                System.out.println("最终的url:"+finalUrl);

            } catch (Exception _error) {
                TeaException error = new TeaException(_error.getMessage(), _error);
                // 如有需要,请打印 error
                com.aliyun.teautil.Common.assertAsString(error.message);
            }

        } catch (OSSException oe) {
            System.out.println("ossE");
        } catch (ClientException ce) {
            System.out.println("clientE");
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

4.运行结果

image.png
最终的图片
image.png

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
6月前
|
JavaScript 前端开发 Java
oss小文件上传
oss小文件上传
77 6
|
存储 缓存 网络安全
在局域网内访问项目时遇到了OSS路径错误的问题
在局域网内访问项目时遇到了OSS路径错误的问题
634 2
|
6月前
|
存储 Java 对象存储
springboot配置阿里云OSS存储实现文件上传下载功能
【1月更文挑战第1天】springboot配置阿里云OSS存储实现文件上传下载功能
2159 2
|
4月前
|
运维 Serverless 对象存储
函数计算产品使用问题之如何配合OSS实现接口收到的图片或文件直接存入OSS
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
存储 Java Maven
大事件后端项目31--------文件上传_阿里云OSS_入门程序
大事件后端项目31--------文件上传_阿里云OSS_入门程序
|
5月前
|
存储 运维 Java
大事件后端项目30------文件上传_阿里云OSS_准备工作
大事件后端项目30------文件上传_阿里云OSS_准备工作
|
5月前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI产品使用合集之如何删除oss路径上特定的模型
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
5月前
|
对象存储
大事件后端项目32--------文件上传_阿里云OSS_程序集成
大事件后端项目32--------文件上传_阿里云OSS_程序集成
|
5月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之在调用接口传入的图片URL参数,文件在本地或者非上海地域OSS链接,该怎么办
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
5月前
|
存储 分布式计算 关系型数据库
实时数仓 Hologres产品使用合集之是否提供相应的功能接口和指令,可以将数据从OSS存储同步到Hologres中进行分析
实时数仓Hologres的基本概念和特点:1.一站式实时数仓引擎:Hologres集成了数据仓库、在线分析处理(OLAP)和在线服务(Serving)能力于一体,适合实时数据分析和决策支持场景。2.兼容PostgreSQL协议:Hologres支持标准SQL(兼容PostgreSQL协议和语法),使得迁移和集成变得简单。3.海量数据处理能力:能够处理PB级数据的多维分析和即席查询,支持高并发低延迟查询。4.实时性:支持数据的实时写入、实时更新和实时分析,满足对数据新鲜度要求高的业务场景。5.与大数据生态集成:与MaxCompute、Flink、DataWorks等阿里云产品深度融合,提供离在线

热门文章

最新文章