第一件代码签名控制器,即我上传文件:
$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)我的问题是如何在这里获得唯一名称?为什么它的所有文件的名称都相同?
答案 0 :(得分:1)
由于缓存配置而发生此问题。而不是将$ config作为参数传递,您可以使用
重新初始化新配置$这 - &GT; upload-&GT;初始化($配置); 希望这能解决问题
答案 1 :(得分:0)
将$rand = md5(uniqid(rand(), true));
放入你的循环