对于使用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类型。