私は複数のファイルをアップロードする機能を持っています。私は2つのforeachを使用してファイルをアップロードします。最初のforeach、Iループアップロードされたファイル、$random_name
で2つの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');
}
では、私は、file_nameをに追加する.date("ymdhis")
を使用しています。したがって、ファイル名はthe file name."_".datetime uploded
に変更されます。
2番目のforeachでは、これを使用して$random_name
をデータベースに挿入します。私は$file_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;
}
。約2-3ファイルをアップロードした場合、$file_name
は$random_name
と一致しています。しかし、アップロードするファイルがさらにある場合、('Ymdhis')
の2番目のファイルが異なるため、$random_name
と一致しません。
$random_name
を$random_name
と一致させる最も良い方法は、挿入されたfile_nameがアップロードされたfile_nameと一致するようにすることです。
注:あなたがより正確なファイル名をキャプチャする必要がある場合は
- 私はfile_nameのに何かを追加したかもしれないが、私は何も削除しないことを好む
日付がアップロードされる正確な秒であることは重要ですか?なぜあなたの変数で 'date()'をループの外に移動し、それを変数に代入して、それを両方のループに渡すのはどうですか?あなたはまだ、コードが開始する正確な時間を、バッチを個別に処理する時間と同じにしています。 –
@MatthewBrentはい、私はまた別の目的のために秒も必要です。 – Vahn
すべてのアップロードファイル名にアタッチできるループの前に '$ random'値を生成するだけではどうですか? 'date()'に頼る代わりに? –