教你用最简单的方式实现Minio直链预览(无需通过后端对外暴露预览接口)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

1.修改Minio上Bucket(存储桶)的配置

2.配置Nginx


前言

 

Minio现在是越来越多人用了,光在csdn相关的文章就数不胜数,安装和使用相关教程,基本上一搜就有,我就不赘述了,附赠两个链接:

Windows环境使用Minio如此简单_win搭建minio-CSDN博客

MinIO在Linux上的详细使用教程_linux链接minio-CSDN博客

这次主要是想教一下大伙怎么弄直链预览,因为我看到还是挺多人在问这方面问题的。

其实在csdn上,直链预览也已经有人教过了,只不过他们教的普遍都是通过后端下载文件,进行二次处理再暴露预览接口的方式实现的预览,会占用一定的性能和内存。

实际上,如果单纯是想做直链预览的话,有更简单的实现方式。


具体步骤

1.修改Minio上Bucket(存储桶)的配置

登录Minio后台,点击Administrator栏下的Buckets,然后选择你需要做直链预览的Bucket。

然后把 Access Policy 修改为 public权限。

这时,该Bucket内的所有文件都可以被直接访问了,但仅限于本地内网。

在Anonymous可以修改可以被直接访问的路径和权限,有需要可以去修改。

接下来,你就需要让外部也能访问该Bucket的文件。

注意:还有一个细节,就是如果你希望别人打开这个直链时,是直接预览,而不是下载,那你得好好看清楚,文件的属性,比如你的文件是图片,那么属性栏里的Content-Type就应该是图片类型才可以,否则浏览器只会默认进行下载。而不是预览。

2.配置Nginx

如何让外部也能访问你本地的Minio也很简单,答案就是用Nginx进行转发。

安装使用我就不谈了,直接上链接:

nginx安装与使用教程详解_nginx 安装使用-CSDN博客

打开Nginx的conf配置文件,在http段新增如下配置:

upstream minio_servers {
    # 你minio服务所在ip地址以及端口
	server 129.1.2.78:9001 weight=10;
}

如果你是云服务器,那更简单了,正常来说服务商会给你分配一个外网地址和内网地址,Minio服务启动的时候应该会自动配置好外网地址和端口,你开放对应的端口就行了。

如果不行,那就用Nginx配一下,把内网的api地址转发到外部。

至于安全性,你又不是把控制台暴露出去,只是把api暴露出去了,权限设置成只读就行。

到这里,应该就可以在外部通过直链预览minio开放的文件了。


觉得这篇文章有用的朋友可以给我点个赞,收藏一下,尤其是修炼搬山诀的道友,你搬就搬吧好歹给哥们点点赞。

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
要在Java中实现MinIO文件预览,您可以使用MinIO Java SDK和其他适当的Java库来处理文件的下载和预览。以下是一个简单的示例代码,演示如何使用Java实现MinIO文件预览: ```java import io.minio.MinioClient; import io.minio.GetObjectArgs; import io.minio.errors.MinioException; import java.awt.Desktop; import java.io.*; public class MinioFilePreview { public static void main(String[] args) { try { // 创建MinIO客户端 MinioClient minioClient = MinioClient.builder() .endpoint("http://localhost:9000") .credentials("ACCESS_KEY", "SECRET_KEY") .build(); // 指定要预览的存储桶和对象名称 String bucketName = "your-bucket"; String objectName = "your-object"; // 下载对象到临时文件 File tempFile = File.createTempFile("temp", ".tmp"); minioClient.getObject(GetObjectArgs.builder() .bucket(bucketName) .object(objectName) .build(), tempFile.getAbsolutePath()); // 根据文件类型选择合适的应用程序进行预览 String mimeType = getMimeType(tempFile); if (mimeType != null && Desktop.isDesktopSupported()) { Desktop.getDesktop().open(tempFile); } else { System.out.println("无法预览该文件类型。"); } } catch (MinioException | IOException e) { e.printStackTrace(); } } // 获取文件的MIME类型 private static String getMimeType(File file) { String mimeType = null; try { mimeType = java.nio.file.Files.probeContentType(file.toPath()); } catch (IOException e) { e.printStackTrace(); } return mimeType; } } ``` 请注意,这只是一个简单的示例代码,您可能需要根据自己的需求进行适当的修改和扩展。确保使用正确的访问凭据(Access Key和Secret Key)以及正确的MinIO服务器端点。还要注意,这个示例假设您的操作系统支持使用Desktop类打开文件预览程序。如果不支持,您可能需要使用其他方法来预览文件,比如使用JavaFX或其他第三方库。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顺德陈奕迅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值