使用链接地址将文件存到MinIO

方法:

public void uploadFile(String fileUrl, String bucketName, String objectName) throws IOException, MinioException, NoSuchAlgorithmException, InvalidKeyException {
    System.out.println("Uploading file from URL: " + fileUrl);
    System.out.println("Object name: " + objectName);

    try (InputStream inputStream = new URL(fileUrl).openStream()) {
        // 获取文件大小
        HttpURLConnection connection = (HttpURLConnection) new URL(fileUrl).openConnection();
        connection.setRequestMethod("HEAD");
        long fileSize = connection.getContentLengthLong();

        // 上传文件到 MinIO
        minioClient.putObject(bucketName, objectName, inputStream, new PutObjectOptions(fileSize, -1)); // 使用文件大小作为部分大小

        System.out.println("File uploaded successfully from URL: " + fileUrl);
    } catch (IOException e) {
        e.printStackTrace();
        System.out.println("Failed to upload file from URL: " + fileUrl);
    }
}
  • fileUrl(文件的完整URL),bucketName(MinIO存储桶的名称),objectName(对象名称,不包含桶名)
  • try (InputStream inputStream = new URL(fileUrl).openStream()) {
    尝试打开一个输入流,以读取来自指定 URL 的文件数据。try 后的圆括号内的资源在 try 块结束后会自动关闭。
  • HttpURLConnection connection = (HttpURLConnection) new URL(fileUrl).openConnection();
    创建一个 HttpURLConnection 对象以便与文件 URL 连接。
  • connection.setRequestMethod("HEAD");
    设定请求方法为 HEAD。HEAD 请求与 GET 类似,但只请求页面的头部,不返回页面主体。这样可以获得文件的元信息而不需要下载整个文件。
  • long fileSize = connection.getContentLengthLong();
    获取文件的大小,并将其存储在 fileSize 变量中。这个大小信息用于在上传文件时指定部分大小。
  • minioClient.putObject(bucketName, objectName, inputStream, new PutObjectOptions(fileSize, -1));
    使用 MinIO 客户端上传文件到指定的存储桶和对象名称。PutObjectOptions 中的 fileSize 确保上传过程中的每个部分大小是有效的。
  • MinIO的 putObject 方法在上传大文件时会将其分块上传,这个分块上传需要知道文件的总大小,以便分块合理。
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用流上传文件MinIO时,需要注意以下参数: 1. Bucket名称:上传的文件需要存储在哪个Bucket中。 2. Object名称:上传的文件保存时使用的Object名称。 3. 文件流:上传文件的数据流,可以使用标准输入流或文件流等。 4. 文件大小:上传文件的大小限制。 5. 文件类型:上传文件的类型限制,可以使用MIME类型或文件扩展名等。 6. 访问控制:上传文件时需要指定访问控制权限,如公共读或私有读写等。 以下是使用Python SDK进行流上传文件MinIO的示例代码: ```python import io from minio import Minio from minio.error import S3Error # 创建MinIO客户端对象 client = Minio( "minio.example.com", access_key="ACCESS_KEY", secret_key="SECRET_KEY", secure=False ) # 上传文件流到MinIO try: # 将文件数据流存储到BytesIO对象中 data = b"Hello, World!" file_data = io.BytesIO(data) # 上传文件流到MinIO client.put_object( bucket_name="my-bucket", object_name="hello.txt", data=file_data, length=len(data), content_type="text/plain", metadata={ "x-amz-acl": "public-read" } ) print("File uploaded successfully.") except S3Error as e: print("Error uploading file: {}".format(e)) ``` 在上面的示例代码中,我们使用MinIO Python SDK中的`put_object()`方法将文件流上传到MinIO。该方法需要指定Bucket名称、Object名称、数据流、数据长度、文件类型和访问控制等参数。需要注意的是,如果上传的文件大小超过了服务器端的配置限制,则会上传失败。因此,需要根据实际情况来设置文件大小和类型限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值