在Java中使用MinIO的minio-java
SDK上传文件(附件)时,你可以使用PutObjectArgs
类来构建上传参数。以下是一个示例代码片段,展示如何从本地文件系统上传一个文件到MinIO bucket:
import io.minio.MinioClient;
import io.minio.errors.MinioException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class MinioUploadFile {
public static void main(String[] args)
throws NoSuchAlgorithmException, IOException, InvalidKeyException, MinioException {
// 创建一个MinioClient对象
MinioClient minioClient = new MinioClient("http://your-minio-server:9000", "accessKey", "secretKey");
// 设置bucket名称和要上传的文件路径以及目标object名称
String bucketName = "mybucket";
String filePath = "/path/to/your/local/file.txt"; // 替换为你的本地文件路径
String objectName = "remoteObjectName.txt"; // 替换为在MinIO中存储的对象名
try (InputStream fileStream = new FileInputStream(filePath)) {
// 构建PutObjectArgs实例
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.stream(fileStream, fileStream.available(), -1) // 使用文件流、文件大小和部分上传标志
.contentType("text/plain") // 根据实际情况设置内容类型
.build();
// 上传文件到MinIO
minioClient.putObject(putObjectArgs);
System.out.println("Successfully uploaded `" + objectName + "` to bucket `" + bucketName + "`");
} catch (FileNotFoundException e) {
System.err.println("File not found: " + filePath);
}
}
}
请确保替换上述代码中的URL、accessKey
、secretKey
、filePath
和remoteObjectName.txt
为你实际的服务器地址、凭证信息、本地文件路径和期望在MinIO中存储的文件对象名称。此外,contentType
应该根据上传文件的实际MIME类型进行设置。