一、整体思路
整个流程的核心是:由你的Python后端生成一个临时的、有时效性的上传凭证(即预签名URL,Presigned URL),然后小程序使用这个凭证,将文件直传到MinIO服务器
下载也是一样,由你的 Python 后端生成带时效的临时下载凭证(预签名 URL),小程序拿到 URL 后直接去 MinIO 获取文件流,千万不要让后端做“文件下载中转站”
具体实现这里不细说,AI一键可以生成。
我碰到的问题和解决办法:
小程序上传下载需要https,而我搭建的minio是http协议的,可以直接将minio改成https协议。这里针对我这种还是使用http协议的。
初始化minio使用的是http协议
首先上传比较简单,直接将构建的上传url替换成https地址即可,不会有签名认证问题。
但下载如果同样直接替换会报SignatureDoesNotMatch问题,这是因为后端使用的是http的地址进行签名生成的,但下载时通过nginx透传给minio的地址是https地址,会导致签名不一致。
解决办法:在nginx代理里的proxy_set_header Host 你的http地址