0
点赞
收藏
分享

微信扫一扫

java操作minio文件上传代码示例:设置Content-Disposition来控制文件在浏览器中是显示还是下载


对于使用MinIO Java SDK(minio-java)来控制文件在浏览器中是显示还是下载,关键也是通过设置Content-Disposition头部来实现。以下是使用MinIO Java SDK上传文件时设置Content-Disposition以便控制文件显示或下载的一个示例:

首先,确保你已经添加了MinIO Java SDK到你的项目依赖中。如果你使用的是Maven,可以在pom.xml中添加如下依赖:

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.0.6</version> <!-- 请检查最新版本 -->
</dependency>

然后,可以使用以下Java代码示例来上传文件,并设置Content-Disposition

import io.minio.BucketExistsArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.errors.MinioException;

import java.io.File;
import java.nio.file.Paths;

public class MinioFileUpload {
    public static void main(String[] args) throws Exception {
        try {
            // 初始化MinioClient
            MinioClient minioClient = MinioClient.builder()
                    .endpoint("https://play.min.io") // 替换为你的MinIO服务器地址
                    .credentials("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG") // 替换为你的Access Key和Secret Key
                    .build();

            // 检查桶是否存在,不存在则创建
            boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket("mybucket").build());
            if (!isExist) {
                // 代码略,此处应创建桶
            }

            // 文件路径和对象名称
            String localFilePath = "/path/to/your/local/file";
            String objectName = "path/in/minio/to/your/file";

            // 设置Content-Disposition,"inline"让文件在浏览器中直接显示,"attachment"则提示下载
            String dispositionType = "inline"; // 或者 "attachment" 以供下载

            // 上传文件并设置Content-Disposition
            minioClient.putObject(
                    PutObjectArgs.builder()
                            .bucket("mybucket")
                            .object(objectName)
                            .filename(localFilePath)
                            .contentType("application/octet-stream") // 根据实际情况调整MIME类型
                            .header("Content-Disposition", dispositionType + "; filename=\"" + Paths.get(localFilePath).getFileName() + "\"")
                            .build()
            );

            System.out.println("上传成功");
        } catch (MinioException e) {
            System.out.println("Error occurred: " + e);
        }
    }
}

在这个示例中,通过PutObjectArgs.builder()构建上传请求时,使用.header("Content-Disposition", ...)方法来设置Content-Disposition。将dispositionType设置为"inline"可以让文件在支持的浏览器中直接显示,而设置为"attachment"则会让浏览器下载文件。记得根据实际情况调整MIME类型。


举报

相关推荐

0 条评论