我有一個上傳多個文件的功能。我使用兩個foreach來上傳文件。在第一個的foreach,我環路上傳的文件,如何使兩個foreach具有相同的變量?
$j_upl = count($my_upload["name"]);
$isUploaded = 0;
$files = $_FILES;
for($i=0;$i<$j_upl;$i++){
$random_name = substr($my_upload["name"][$i],0,-4)."_".date("ymdhis").$i.substr($my_upload["name"][$i],-4);
$this->load->library('upload', $config);
$_FILES['upload_act']['name'] = $files['upload_act']['name'][$i];
$_FILES['upload_act']['type'] = $files['upload_act']['type'][$i];
$_FILES['upload_act']['tmp_name'] = $files['upload_act']['tmp_name'][$i];
$_FILES['upload_act']['error'] = $files['upload_act']['error'][$i];
$_FILES['upload_act']['size'] = $files['upload_act']['size'][$i];
$this->upload->initialize($config);
$this->upload->do_upload('upload_act');
}
在$random_name
,我用.date("ymdhis")
被添加到file_name中。所以,該文件將被重命名爲the file name."_".datetime uploded
。
在第二個foreach中,我使用它將$random_name
插入到數據庫中。
foreach($details as $rows){
$file_name = substr($rows['val_upl'],0,-4)."_".date("ymdhis").$ii.substr($rows['val_upl'],-4);
$dt_act['UPL_FILENAME'] = ($rows['val_upl'] == "") ? NULL : $file_name.$ii;
$this->MProject->ins_activity_m($dt_act);
$ii += 1;
}
我用同樣的方法得到$file_name
。如果我上傳大約2-3個文件,則$file_name
與$random_name
匹配。但是,如果有更多文件需要上傳,則開始與$random_name
不匹配,因爲('Ymdhis')
中的第二個不同。
獲得$random_name
與$random_name
匹配的最佳方法是什麼,以便插入的file_name與上傳的file_name匹配?
注:
- 我可以添加一些東西到FILE_NAME,但我寧願不刪除任何東西(日期時間格式應該存在)
這是否重要,日期是確切的第二次上傳。爲什麼不用你的變量將'date()'移動到循環外部,並將它分配給一個變量並將其傳遞給兩個循環?您仍然可以獲得代碼開始處理批處理的確切時間,而不是單獨處理。 –
@MatthewBrent是的,我也需要秒爲另一個目的。 – Vahn
爲什麼不只是在循環中生成'$ random'值_before_,你可以附加到所有的上傳文件名?而不是依靠'date()'? –