minio 中的上传
minio 中的上传
关于在 minio 中的上传遇到的问题
在使用 minio 时,遇到了一些问题,这里记录一下。
上传文件
在今天(2024-08-13)之前,我在公司所提供的 minio(版本号:RELEASE.2022-06-11T19-55-32Z)服务中上传文件时,都是用的 File 对象。
备注一下:我所有的上传,都是通过公司提供的一个 JSSDK 方法进行上传的,不清楚是不是这里面做了什么处理,反正上传的文件类型 File/ Blob 对象都是可以的(能正常上传)。
一切都很正常。
但因为特殊原因,在前端对文件进行了压缩,所以上传的文件类型变成了 Blob 对象。(在发现问题之前,因为上传很正常,也能预览。所以我并没有注意到接下来将要提到的问题)
在这里顺便提一嘴关于前端压缩,因为我是需要压缩图片,所以我找了一翻插件,最终选择了 Browser Image Compression,目前觉得还不错。
上传之后
在上传之后,我发现了一个问题,就是上传的文件在 minio 中的文件名是没有文件类型后缀的。虽然能预览/下载,但没有文件类型后缀(之前就有),感觉会在某些场景下有问题。
所以我来进行了一番调查。
起初,我认为是我用的压缩插件的问题:它可能丢失了文件类型的相关信息。
但我去看文档,发现它是有保留文件类型的信息的:不指定 fileType
时,它也会根据文件的 mime 类型来判断文件类型。
比如:
{
lastModified: 1723529024502,
name: "bird-8785666.jpg",
size: 1011406,
type: "image/jpeg"
}
但,上传到 minio 后,文件名就没有了文件类型后缀。
所以我又对比了下,在出现文件类型后缀丢失的情况前后上传的文件类型:File 和 Blob。
于是我尝试去上传这个从 File => Blob => File 的对象:发现上传后的文件名是有文件类型后缀的。
看了下 minio 的文档,对于“为什么 Blob 对象上传后没有文件类型后缀?”的问题,我并没有找到具体的信息/原因。可能要我自己自建一个 minio 服务,然后去调试才能知道了。
但我又尝试,在上传 File 对象时:
- 将文件名改为没有文件类型后缀的名字,发现上传后的文件名也是没有文件类型后缀的。
- 将文件名的后缀改为非实际文件类型的,发现上传后的文件名的后缀也是这个非实际文件类型的。比如实际的文件名是
bird-8785666.jpg
,我将文件名改为bird-8785666.png
,上传后的文件名就是bird-8785666.png
。
所以按目前的设定,这个 minio 服务,是读取的 File 的 fileName 属性内容中的后缀来作为存储时的文件名后缀。
而假如上传的是一个 Blob 对象,那么就永远没有文件类型后缀。虽然 Blob 对象的 type 属性是有文件类型的。
暂时就这样记录下,后面有机会再去调试细究一下。