1.简介
minio取名从官网址https://docs.min.io/可以看出,使用上也是非常的min。官方吹得是世上最快的对象储存系统,可以替代Hadoop HDFS,看来这里也没fastDFS什么事了
2.安装minio,最后的server /data表示数据储存目录,这里把该目录映射到/home/data/minio下,需要迁入或迁出数据之间从这里面copy即可
docker run -p 8219:9000 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=admin123456" -v /home/data/minio:/data -v /etc/minio/config:/root/.minio minio/minio server /data
3.API使用示例,跟七牛云的api很类似,更多参考官方文档
public static void main(String[] args) throws IOException, InvalidKeyException, InvalidResponseException, InsufficientDataException, NoSuchAlgorithmException, ServerException, InternalException, XmlParserException, ErrorResponseException {
MinioClient client = MinioClient.builder()
.endpoint(HttpUrl.parse("http://xxxx:8219"))
.credentials("admin", "admin123456")
.build();
//file上传
ObjectWriteResponse uploaWriteResponse = client.uploadObject(
UploadObjectArgs.builder()
.bucket("test2020")
.filename("D:\\test.jpg")
.object("1B.jpg")
.build());
System.out.println(uploaWriteResponse.headers());
//流上传(Controller接收MultipartFile)
MultipartFile file = null;
ObjectWriteResponse objectWriteResponse = client.putObject(
PutObjectArgs.builder()
.bucket("test2020")
.stream(file.getInputStream(), -1, 1024)
.object("1B.jpg")
.build());
System.out.println(uploaWriteResponse.headers());
//获取带有过期时间的链接地址
String objectUrl = client.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()
.bucket("test2020")
.object("1B.jpg")
.method(Method.GET)
.expiry(30, TimeUnit.SECONDS)
.build());
System.out.println(objectUrl);
//下载到本地
client.downloadObject(DownloadObjectArgs.builder()
.bucket("test2020")
.object("1B.jpg")
.filename("mydownload.jpg")
.build());
//下载写入HttpServletResponse
HttpServletResponse response = null;
GetObjectResponse getObjectResponse = client.getObject(GetObjectArgs.builder()
.bucket("test2020")
.object("1B.jpg")
.build());
response.setHeader("Content-Disposition", "attachment;filename=" + "mydownload.jpg");
response.setContentType("application/force-download");
response.setCharacterEncoding("UTF-8");
IOUtils.copy(getObjectResponse, response.getOutputStream());
}
4.web控制台