CodeIgniter上传类 - 所有文件的唯一名称

时间:2014-09-19 07:30:52

标签: php codeigniter upload continuous-integration

第一件代码签名控制器,即我上传文件:

        $files = $_FILES;
        $order_number = 5 //example
        $cpt = count($_FILES['userfile']['name']);

        $rand = md5(uniqid(rand(), true));

        for($i=0;$i<$cpt;$i++)
        {
            if(!empty($files['userfile']['name'][$i]))
            {
                $_FILES['userfile']['name']= $files['userfile']['name'][$i];
                $_FILES['userfile']['type']= $files['userfile']['type'][$i];
                $_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
                $_FILES['userfile']['error']= $files['userfile']['error'][$i];
                $_FILES['userfile']['size']= $files['userfile']['size'][$i];    

                $format=explode('.',$files['userfile']['name'][$i]);
                $format=end($format);

                $config_img['upload_path'] = './uploads/orders';
                $config_img['allowed_types'] = 'jpg|png';
                $config_img['file_name'] = $order_number.'_'.$rand.'.'.$format;
                $config_img['max_size'] = '5120';
(...)//some code that is not a problem
$this->load->library('upload', $config_img);
if($this->upload->do_upload())
(...)

好。到目前为止,Gettin文件可以正常工作,但使用其他名称保存它是个问题。 前例我发送file1.png和file2.jpg 我不是gettin 5_123123123.png和5_864192696219.jpg这就是问题所在。 我将2个文件命名为相同(仅上传类添加“1”之前),但最大的问题是它们也具有相同的格式。 (在这个例子中是.png)我的问题是如何在这里获得唯一名称?为什么它的所有文件的名称都相同?

2 个答案:

答案 0 :(得分:1)

由于缓存配置而发生此问题。而不是将$ config作为参数传递,您可以使用

重新初始化新配置

$这 - &GT; upload-&GT;初始化($配置); 希望这能解决问题

答案 1 :(得分:0)

$rand = md5(uniqid(rand(), true));放入你的循环