我正在使用此功能上傳圖像,並且它正在工作,除了一部分。如果有多個圖片用於上傳,所有圖片都會從第一張圖片中獲取其名稱(覆蓋設置爲關閉,因此CI將在名稱末尾添加數字)。我怎麼解決這個問題?Codeigniter 2.1 - 圖像名稱在上傳時無法正常工作
function img_upload($folder) {
$this->path = './public/img/' . $folder;
$imgs = array();
$count = 0;
foreach($_FILES as $key => $value):
$img_name = is_array($value['name']) ? $value['name'][$count] : $value['name'];
$img_name = $this->char_replace($img_name, '_');
$count++;
$config = array(
'allowed_types' => 'jpg|jpeg|png|gif',
'upload_path' => $this->path,
'file_name' => $img_name
);
$this->CI->load->library('image_lib');
$this->CI->image_lib->clear();
$this->CI->load->library('upload', $config);
if($key != 'logo'):
if (!$this->CI->upload->do_upload($key)) {
} else {
$image = $this->CI->upload->data();
$imgs[] = $image['file_name'];
}
endif;
endforeach;
if(empty($imgs)):
return FALSE;
else:
return implode(',', $imgs);
endif;
}
功能char_replace工作沒有問題。
function char_replace($text, $rep_simbol = " ")
{
$char = array('!', '&', '?', '/', '/\/', ':', ';', '#', '<', '>', '=', '^', '@', '~', '`', '[', ']', '{', '}');
return $name = str_replace($char, $rep_simbol, $text);
}
請不要將'if():endif;'語法與'if(){}'語法混合使用! –
@RocketHazmat我沒有看到。我正在改變這個功能,並且一些舊代碼保持不變。感謝您的洞察力。 – Sasha
您的'$ count'變量只在每次運行'foreach'時增加。你想要一個內部循環來遍歷多個文件。 –