如何使用改写的文件名提供文件?

时间:2019-06-19 05:57:54

标签: asp.net-core

我正在开发一个将图像存储在文件系统中的应用程序。例如,如果用户上传名为“ green.jpg”的图像,它将被存储为 /wwwroot/images/f/c/3/fc3b16ee-9254-11e9-bc42-526af7764f64.jpg

在数据库中,我将有一个表,其中包含图像名称及其原始名称:

UUID                                    Name
fc3b16ee-9254-11e9-bc42-526af7764f64    green.jpg

我希望生成的html看起来像:

<img src="/whatever/green.jpg">

所以问题是当浏览器请求“ green.jpg”时,如何提供 /wwwroot/images/f/c/3/fc3b16ee-9254-11e9-bc42-526af7764f64.jpg “”

生成 /wwwroot/whatever/green.jpg 并不是一个好主意,因为可能会发生名称冲突和辅助磁盘io。

我想要的是生成的HTML中的文件名是人类可读的,但是以一种可以避免文件名冲突的方式存储,并且目录中没有太多文件。

为UUID的每个字母生成一个新目录可以解决这两个问题,但是我不知道这是一个好主意。

使用UUID并不重要,仅文件路径的唯一性才重要。即使我使用整数作为唯一标识符,即使会有数百万个图像,拥有数百万个目录也可能太多。

如果那很重要,我将PostgreSQL作为数据库引擎,并将在Linux上运行该应用程序。我不知道我将使用哪种文件系统,可能是ext4。

0 个答案:

没有答案