代码点火器文件上传类 - 如何更改已保存的文件名?

时间:2011-11-27 00:58:56

标签: php codeigniter

我正在使用CodeIgniter框架编写应用程序,我正在使用CI文件上传类从Web表单将图像文件上传到服务器。

文件上传很好,但我希望能够在服务器上以不同的唯一名称保存它们。我想告诉文件上传类使用每个文件的不同的唯一文件名将文件保存到服务器,但我无法弄清楚如何这样做。

我已经检查了该类的CI文档,我发现你可以使用该类加密文件名,但我不相信这会给我一个唯一的文件名,它只是加密它。

我已经在应用程序中分配了一个唯一的文件名,所以我只需要弄清楚每次保存文件时如何让File Uploading类接受备用文件名。有人知道是否可以这样做?

3 个答案:

答案 0 :(得分:5)

您可以设置配置变量以实现您提出的所有要求。可以在manual page

中找到以下配置变量

为您上传的文件设置文件名

  

file_name无所需文件名

     

如果设置CodeIgniter,则会将上传的文件重命名为此名称。该   文件名中提供的扩展名也必须是允许的文件类型。

确保文件名是唯一的

  

覆盖FALSE TRUE / FALSE(布尔值)

     

如果设置为true,则表示与您的名称相同的文件   上传存在,将被覆盖。如果设置为false,则为数字   如果存在另一个具有相同名称的文件名,则将附加到文件名。

您可以按如下方式设置这些配置变量

$config['file_name'] = 'myfile';
$config['overwrite'] = false;

$this->load->library('upload', $config);

// Alternately you can set preferences by calling the initialize function. Useful if you auto-load the class:
$this->upload->initialize($config);

答案 1 :(得分:5)

如果您想更改上传文件名,请尝试以下操作:

$newFileName = $_FILES['userfile']['name'];
// You can setfilename in config for upload
$config['file_name'] = $new_name;

答案 2 :(得分:1)

您可以设置文件名:

$newFileName = $_FILES['some_field']['name'];
$fileExt = array_pop(explode(".", $newFileName));
$filename = md5(time()).".".$fileExt;

//set filename in config for upload
$config['file_name'] = $filename;

希望有所帮助