base64图片信息不存盘直接上传minio

本文介绍如何使用Python将Base64编码的图片数据上传到MinIO对象存储服务。通过示例代码展示了从Base64字符串解码为图片数据,并使用MinIO客户端将其保存到指定桶的过程。
部署运行你感兴趣的模型镜像
import base64
import os
from minio import Minio


bs64_str = "/9j/4AAQSkZJRgA...BAQAAAQABAAD"
img_data = base64.b64decode(bs64_str)
client = Minio(
            endpoint=endpoint,
            access_key=access_key,
            secret_key=secret_key,
            secure=False,
        )
client.put_object(bucket_name, "test.jpg", io.BytesIO(img_data), length=-1, part_size=10 * 1024 * 1024, content_type="image/jpeg"
        )

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 将Base64字符串转换为InputStream并上传图片MinIO 在Java中,可以通过`ByteArrayInputStream`将Base64编码的字符串转换为`InputStream`对象。然而,在实际操作过程中需要注意的是,如果直接使用`new ByteArrayInputStream(imgBase64.getBytes())`而不先对Base64字符串进行解码,则可能导致上传后的图片无法正常打开或显示损坏的情况[^1]。 为了正确处理这一问题,可以按照以下方式实现: #### 正确的Base64转InputStream逻辑 首先需要调用`Base64.getDecoder().decode()`方法来解码Base64字符串,从而获取原始的二进制数据。之后再通过`ByteArrayInputStream`将其封装成`InputStream`形式用于后续的操作。 以下是具体的代码示例: ```java import java.io.ByteArrayInputStream; import java.util.Base64; public class Base64ToInputStream { public static ByteArrayInputStream convert(String imgBase64) throws Exception { // 移除可能存在的Base64信息 (data:image/jpeg;base64,) if (imgBase64 != null && imgBase64.startsWith("data:image")) { imgBase64 = imgBase64.substring(imgBase64.indexOf(",") + 1); } byte[] decodedBytes = Base64.getDecoder().decode(imgBase64); // 对Base64字符串进行解码 return new ByteArrayInputStream(decodedBytes); // 转换为InputStream } } ``` #### 使用MinIO SDK完成文件上传 接下来利用上述得到的`InputStream`配合MinIO客户端库执行文件上传功能。这里假设已经完成了必要的环境搭建以及依赖引入工作,并且配置好了相应的连接参数如URL、Access Key和Secret Key等[^2]。 下面展示了一个完整的例子说明如何基于前面定义的方法向MinIO服务器发送一张由Base64表示的图像资源: ```java import io.minio.MinioClient; import io.minio.PutObjectArgs; import java.io.InputStream; public class MinioUploadExample { private final static String MINIO_URL = "http://localhost:9000"; private final static String ACCESS_KEY = "your-access-key"; private final static String SECRET_KEY = "your-secret-key"; public static void main(String[] args) throws Exception { try { // 初始化MinIO Client实例 MinioClient minioClient = MinioClient.builder() .endpoint(MINIO_URL) .credentials(ACCESS_KEY, SECRET_KEY) .build(); // 获取Base64格式的图片字符串(此处仅为演示) String base64ImageString = "..."; InputStream inputStream = Base64ToInputStream.convert(base64ImageString); PutObjectArgs objectArgs = PutObjectArgs.builder() .bucket("images") // 存储桶名称 .object("example.jpg") // 文件名 .stream(inputStream, inputStream.available(), -1) // 输入流及其大小 .contentType("image/jpeg") // MIME类型 .build(); minioClient.putObject(objectArgs); System.out.println("成功上传图片!"); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } } } ``` 以上程序片段展示了从读取Base64编码的数据直至最终存入MinIO存储系统的全过程。其中特别强调了对于输入源的有效管理——即确保传给MinIO API的对象是一个经过适当预处理的真实二进制比特序列而非简单的字符数组副本[^3]。 --- ### 注意事项 - **异常捕获**:建议增加更详细的错误捕捉机制以便更好地定位潜在失败原因。 - **性能优化**:当面对较大尺寸的多媒体素材时考虑采用分片传输策略或者调整缓冲区设置以减少内存占用。 - **安全性考量**:生产环境中应妥善保管认证凭证并通过HTTPS协议保护通信链路安全。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值