我在服务器上有一系列具有严格命名约定的照片:“uniqueId-readableName.jpg”。我这样做是因为我的网站数据库目前只记录 uniqueID(和一些不相关的信息),但人们偶尔需要直接查看文件服务器来浏览照片(通过 FTP),因此可读的名称很有用。例如
001456-War Horse.jpg
003295-Sunshine Daiseys.jpg
129084-Laboring at the farm 2013-08-11.jpg
Run Code Online (Sandbox Code Playgroud)
现在,我相当确定最好的选择是使用完整文件名的记录来设置数据库,但我只是想看看是否有人有我可能遗漏的任何想法。这个关于 SO 的问题是类似的,但在这里我有严格的命名约定 - 不确定这是否有任何可能性。
我将此应用于img,但同样的想法可以应用于任何文件扩展名(例如,下载“789-My Homework.zip”或“123-Family leave.zip”)。
作为我正在寻找的示例,在 Windows 资源管理器中,您可以进行文件搜索
0*.jpg
Run Code Online (Sandbox Code Playgroud)
并且可以返回以下所有文件
001456-War Horse.jpg
003295-Sunshine Daiseys.jpg
029084-Laboring at the farm 2013-08-11.jpg
Run Code Online (Sandbox Code Playgroud)
在我的情况下,开始部分总是独一无二的,所以我想使用类似的东西001456-*.jpg并让它返回001456-War Horse.jpg。
有没有办法在网站上做到这一点?
<img src="001456-*.jpg" />
Run Code Online (Sandbox Code Playgroud)
虽然不存在这样的方法,但您仍然可以执行服务器端脚本来实现您需要的功能。
例如,在 PHP 中,您可以使用内置命令浏览文件夹,选择与条件名称匹配的所有文件为“001456-*.jpg”,然后根据返回的记录数选择第一个文件名并将其插入 IMG标签。
这是 PHP 中的示例实现:
$files = array();
$id = "001456";
$files = glob("id-*.jpg");
echo "<img src='$files[0]' />"; //Assuming one file is found for every unique ID.
Run Code Online (Sandbox Code Playgroud)