public List<String> getNginxObjectUrlByList(String bucketName, String fileNameList) {
List<String> fileNames = JSON.parseArray(fileNameList, String.class);
List<String> urlList = new ArrayList<>();
fileNames.forEach(res ->{
urlList.add(getObjectUrl(bucketName, res).replace("内网地址+minio端口号", "外网地址/minio"));
});
return urlList;
server {
listen 80;
location ^~ /minio/ {
proxy_read_timeout 600s;
#这里一开始用了127.0.0.1不好用,没看原因
proxy_pass http://内网地址+minio端口号;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Special-Delivery "";
proxy_set_header Access-Control-Allow-Origin "";
proxy_set_header Proxy-Client-IP $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header X-Special-Delivery "stop-polling-our-interface-you-bitch" always;
add_header Access-Control-Allow-Origin "you-poll-your-mama-blyat" always;
expires为连接有效时间。bucketName为桶名。
public String presignedGetObject(String objectName, Integer expires) {
try {
if (expires == null) {
expires = 86400;
return this.minioClient.presignedGetO
minio 兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java,Python,Javacript, Golang语言。
Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作
在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
MinIO是一个非常轻量的服务,可以很简单的和其...
在 MinIO 中上传的文件默认情况下是私有的,只能由上传者本人进行访问。如果需要获取永久的公开访问地址,可以使用 MinIO 提供的 Presigned URL 功能。
Presigned URL 是一种特殊的 URL,可以用于授权访问 MinIO 中的文件。使用 Presigned URL,您可以授权其他人访问 MinIO 中的文件,而无需将访问权限授予整个桶或对象。Presigned URL 的有效期由您自己指定,可以设置为永久。
以下是使用 MinIO Python SDK 生成 Presigned URL 的示例代码:
```python
from minio import Minio
from datetime import datetime, timedelta
# 初始化 MinIO 客户端
client = Minio(
endpoint='minio.example.com',
access_key='YOUR_ACCESS_KEY',
secret_key='YOUR_SECRET_KEY',
secure=False
# 获取一个对象的 Presigned URL
bucket_name = 'my-bucket'
object_name = 'my-object'
expires_in_days = 3650 # 设置有效期为 10 年
# 计算过期时间
expires_at = datetime.utcnow() + timedelta(days=expires_in_days)
# 生成 Presigned URL
url = client.presigned_get_object(
bucket_name=bucket_name,
object_name=object_name,
expires=expires_at
print(url)
在上述示例代码中,`expires_in_days` 变量用于设置 Presigned URL 的有效期,单位为天。`expires_at` 变量则是计算出来的 Presigned URL 的过期时间,使用了当前时间加上有效期这个计算方法。`client.presigned_get_object` 方法用于生成 Presigned URL。最后打印出来的 `url` 就是生成的 Presigned URL。
注意,Presigned URL 指定的有效期过后,URL 将不再可用,需要重新生成。如果您需要永久地公开访问文件,建议将文件 ACL 设置为公共读取。