Переименование файлов со случайной строкой после загрузки и сохранение имени в массиве

Я пытаюсь обработать несколько файлов с помощью foreach затем переименуйте файлы со случайной строкой и сохраните имена файлов в массиве, вот мой текущий код:

    // this variable stores the id of last inserted row in MySQLi DB
$last_shipment_id = mysqli_insert_id($con);
// Array of valid file formats
$valid_formats = array("jpg", "jpeg", "png");
// the upload path
$path = "../uploads/"; // Upload directory
// count variable for foreach counting
$count = 0;
// variable for generated file names to use them later
$new_file_name = array();foreach ($_FILES['files']['name'] as $f => $name) {
$ext = pathinfo($name, PATHINFO_EXTENSION);
$new_file_name[] = randomNumber(14)."-".$last_shipment_id.'.'.$ext;

if ($_FILES['files']['error'][$f] == 4) {
continue;
}
if ($_FILES['files']['error'][$f] == 0) {
if( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) ){
$message[] = "$name is not a valid format";
continue;
} else {
if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path.$new_file_name)) {

}
}
}
}

Я не могу найти, где проблема, я должен использовать foreach для каждого сгенерированного имени файла используйте move_uploaded_file внутри foreach?

0

Решение

Вы совершенно не правы. Вы инициализировали $_FILES['files']['name'] в foreach заявление и пытается получить доступ $_FILES['files']['error'] а также $_FILES["files"]["tmp_name"] в каждой итерации. Поскольку это массив, это невозможно.

Таким образом, решение заключается в следующем,

foreach($_FILES as $key=>$row){
$ext = pathinfo($row[$key]['files']['name'], PATHINFO_EXTENSION);
$new_file = randomNumber(14)."-".$last_shipment_id.'.'.$ext;
array_push($new_file_name,$new_file);
if ($row[$key]['files']['error'] == 4) {
continue;
}
if ($row[$key]['files']['error'] == 0) {
if( ! in_array($ext,  $valid_formats) ){
$error_msg = "The file ". $new_file. " is not a valid format";
array_push($message, $error_msg);
continue;
} else {
if(move_uploaded_file($row[$key]["files"]["tmp_name"], $path.$new_file_name[$key])) {

}
}
}
}

Надеюсь, это поможет вам.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]