Joomla 2.5:GD库 - 如何命名文件以避免冲突

时间:2014-01-18 14:32:21

标签: php joomla gd filenames

我正在为Joomla 2.5编写一个组件,它根据用户输入使用PHP GD库生成图形。

当多个用户使用该组件时,我应该为图像文件指定什么名称以避免冲突。

2 个答案:

答案 0 :(得分:0)

你可以在例如帮助下生成随机名称日期和PHP哈希函数: http://www.php.net/manual/en/function.hash.php

因此名称将是唯一的。

或者,取决于组件中使用的功能,您可以以某种方式将用户名添加到图像名称。这取决于组件的功能和我的因素(如果每个用户只有一个图像,或者每个其他功能等)。

答案 1 :(得分:0)

在我看来,你有两种方式。 第一个是使用像

这样的前缀保存图像
scotttiger-img12321323.jpg

其中 scotttiger 是用户名, 12321323 是用户输入。 另一种方法是为每个用户使用不同的文件夹

scotttiger/1231321.jpg

但是如果您没有登录用户并且不知道用户名,请使用isfile(http://it1.php.net/is_file)函数进行简单检查并设置增量名称。例如:

$wrote = false;
$prog = 0;
$filename="img-{$user_input}-{$prog}.jpg";
while(isfile($filename)) {
   $prog++;
   $filename="img-{$user_input}-{$prog}.jpg";
}
write_file($filename);

所以你第一次有img-input-1.jpg第二次img-input-2.jpg等等。 使用此解决方案您没有重复或冲突。

您可以使用此解决方案提高性能:

$wrote = false;
$prog = md5(time());
$filename="img-{$user_input}-{$prog}.jpg";
while(isfile($filename)) {
   $prog = md5(time());
   $filename="img-{$user_input}-{$prog}.jpg";
}
write_file($filename);