1

用户将能够上传图像并且名称将被更改,因此它不会与另一个文件具有相同的名称。使用简单的约定,例如称它们为 1.jpg、2.jpg、3.jpg 等,这意味着其他用户可以简单地输入 4.jpg 并查看其他人的图像。

有没有一种方法或约定来命名不同的图像,同时仍然确保猜测图像名称是困难的?

4

2 回答 2

3

您可以编写一个 PHP 脚本来每次生成一些伪随机图像名称,例如 21412adfs.jpg。

更好的是,取上传文件的名称,并在其上附加一个 6 位随机数或其他内容,例如 19353--toy--car.png,您甚至可以将 6 位数字替换为代表日期的数字上传的图片。

命名约定可以是您真正想要的任何形式,任何最适合您的设置和存档目的的形式。在图像名称中包含日期可能会很好,因为您可以根据日期等轻松地将图像分类到不同的上传文件夹中。

于 2012-06-29T15:07:59.207 回答
1

最好的办法是使用散列函数生成可以使用的随机字符串。例如,在 PHP 中,您可以使用以下内容。

$filename = md5('SOME RANDOM STRING'.rand(0,200000).time());

MD5 有时会生成相同的随机字符串,这会导致文件名冲突,但这种情况发生的可能性很小,如果是这样......你所要做的就是再次运行名称生成 - 连续两次冲突极不可能。

确保将“一些随机字符串”更改为只有您知道并在您的网站上使用的内容。这就是所谓的“站点盐”,这意味着外人将很难猜测您生成的文件名的名称,因为他们将无法预测和逆向工程您放入混合生成的所有内容它。

希望有帮助吗?

于 2012-06-29T15:13:11.633 回答