Codeigniter:在for循环中设置上传文件名

时间:2016-05-23 23:37:34

标签: php mysql codeigniter wamp

我在Codeigniter中设置for循环中的上传文件名时遇到问题,我想将上传的文件(歌曲)添加到数据库和某个文件夹中。我想将它们命名为song1,song2,song3 ...其中number是数据库中歌曲的ID。这是我的代码:

   for ($i = 1; $i < 201; $i++) {

        if (isset($_POST['name'.$i])) {

            $maxID = $this->Song_model->maxID();
            $maxID++;
            $config['file_name'] = "song".$maxID;
            $config['upload_path'] = "./assets/uploads/";
            $config['allowed_types'] = '*';
            $config['max_size'] = 0;
            $this->load->library('upload', $config);

            if ($this->upload->do_upload('file'.$i) == true) {
                $data = array(
                    'IDArt' => $artistID,
                    'IDAlb' => $newAlbumId,
                    'songname' => $this->input->post('name'.$i),
                    'author' => $artistName,
                    'length' => $this->input->post('length'.$i),
                    'price' => $this->input->post('price'.$i)
                );
                $this->Song_model->persist($data);
            }


        }

    }

我正在上传的许多歌曲的第一首歌得到了好名字的例子:song11(之前有10首歌曲在数据库中),但是在此之后出现的歌曲,获得名字song111,歌曲112.

代码段:
$ maxID = $ this-&gt; Song_model-&gt; maxID();
            $ maxID ++;

获取我需要与“歌曲”连接的确切ID但是,似乎我错了 $ config ['file_name'] =“song”。$ maxID; 此行< / p>

顺便说一下。当文件上传名称设置为相同值时,发生song11,song111,song112“song11”

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案,我已经用函数bool move_uploaded_file修复了它,它可以在上传后动态更改文件名。