camel+minio实现预签名URL上传

简介: camel+minio实现预签名URL上传

充实的思想不在于言语的美丽,而在于它引以自豪的内容。——莎士比亚

Camel文档:

Minio :: Apache Camel

Minio文档:

https://min.io/docs/minio/linux/developers/java/API.html#getPresignedObjectUrl

Amazon文档:

使用预签名 URL - Amazon Simple Storage Service

然后核心配置如下:

// For the generate Pre signed Url route
from(direct("createUploadLink"))
        .to(minio(CamelConst.BUCKET_TEMPLATE).operation(MinioOperations.createUploadLink));

其余配置部分参考 springboot+camel对接minio上传下载

接下来就是使用:

import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.URLUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.http.Method;
import io.minio.GetObjectResponse;
import org.apache.camel.CamelContext;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.minio.MinioComponent;
import org.apache.camel.component.minio.MinioConstants;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.io.IOException;
import java.time.Duration;
import java.time.temporal.ChronoUnit;
import java.util.Map;

代码

@Test
void testGeneratePresignedUrl() throws IOException {
    var presignedUrl = producerTemplate.requestBodyAndHeaders("direct:createUploadLink", "",
            Map.of(MinioConstants.BUCKET_NAME, "testbucket",
                    MinioConstants.OBJECT_NAME, "test.txt",
                    MinioConstants.PRESIGNED_URL_EXPIRATION_TIME, Duration.of(1, ChronoUnit.DAYS)));
    Assertions.assertNotNull(presignedUrl);
    var content = "Hello, Minio! Again!";
    try (var response = HttpUtil.createRequest(Method.PUT, presignedUrl.toString())
            .body(content, "application/octet-stream").execute()) {
        Assertions.assertTrue(response.isOk());
    }
    var minio = (MinioComponent) camelContext.getComponent("minio");
    Assertions.assertEquals(content,
            IoUtil.readUtf8(URLUtil.url(minio.getConfiguration().getEndpoint() + "/testbucket/test.txt").openStream()));
}
相关文章
|
6月前
|
存储 安全 API
对象存储OSS产品常见问题之在URL中包含签名如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
295 0
|
Java 开发工具 对象存储
OSS如何生成删除请求的签名url
OSS如何生成删除请求的签名url
OSS如何生成删除请求的签名url
|
云安全 运维 算法
JAVA实现RTMP推流上传阿里云OSS的签名URL
由于目前官方帮助文档提供的示例是Python的,本文介绍如何使用JAVA实现生成LiveChannel的签名URL,包括推流地址和播放地址。
2410 0
JAVA实现RTMP推流上传阿里云OSS的签名URL
|
云安全 运维 Java
【OSS最佳实践】JAVA实现RTMP推流上传OSS的签名URL
背景介绍 OSS支持使用RTMP协议推送H264编码的视频流和AAC编码的音频流到OSS。推送到OSS的音视频数据可以点播播放;在对延迟不敏感的应用场景,也可以做直播用途。RTMP推流上传的流程是创建LiveChannel以后生成推流地址,关于这块的介绍在官方帮助文档里也有介绍,具体可以参考文档"RTMP推流上传"。
2257 0
【OSS最佳实践】JAVA实现RTMP推流上传OSS的签名URL
|
6月前
uView queryParams 对象转URL参数
uView queryParams 对象转URL参数
65 0
|
2月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
49 0
|
3月前
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
|
3月前
|
Java
JAVA 获取 URL 指定参数的值
JAVA 获取 URL 指定参数的值
48 0
|
4月前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
250 0
|
4月前
|
JavaScript
js 获取并解析 url 中参数的三种方法
js 获取并解析 url 中参数的三种方法
448 0

热门文章

最新文章

下一篇
无影云桌面