на странице я имею:
if (!empty($_FILES['logo']['name'])) {
$dossier = 'upload/';
$fichier = basename($_FILES['logo']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['logo']['tmp_name']);
$extensions = array('.png', '.jpg', '.jpeg');
$extension = strrchr($_FILES['logo']['name'], '.');
if(!in_array($extension, $extensions)) {
$erreur = 'ERROR you must upload the right type';
}
if($taille>$taille_maxi) {
$erreur = 'too heavy';
}
if(!empty($erreur)) {
// ...
}
}
Проблема, если пользователи хотят отредактировать информацию, не загружая ЛОГОТИП, это повышает ошибку: 'ошибка необходимо загрузить правильный тип'
Так, если пользователь ничего не помещал в inputbox для загрузки его, я не хочу вводить в эти условия тест.
я протестировал: if (!empty($_FILES['logo']['name'])
и if (isset($_FILES['logo']['name'])
но оба не делают, кажется, работает.
Какие-либо идеи?
редактирование: возможно, я не был так ясен, я не хочу тестировать, если он загрузил логотип, я хочу протестировать, ЕСЛИ он выбрал файл для загрузки, потому что прямо сейчас, если он не выбирает файл для загрузки, php повышает ошибку при сообщении, что он должен загрузить с правильным форматом.
спасибо.
Вы можете проверить это с помощью:
if (empty($_FILES['logo']['name'])) {
// No file was selected for upload, your (re)action goes here
}
Или вы можете использовать конструкцию javascript, которая активирует кнопку загрузки / отправки только тогда, когда поле загрузки имеет значение, отличное от пустой строки (""), чтобы избежать отправки формы с нет загрузки вообще.
В документации php есть раздел о работе с файлами. Вы найдете, что вы можете проверить различные ошибки, и одна из них
UPLOAD_ERR_OK
Value: 0; There is no error, the file uploaded with success.
<...>
UPLOAD_ERR_NO_FILE
Value: 4; No file was uploaded.
В вашем случае вам нужен код типа
if ($_FILES['logo']['error'] == UPLOAD_ERR_OK) { ... }
или
if ($_FILES['logo']['error'] != UPLOAD_ERR_NO_FILE) { ... }
Вы должны рассмотреть возможность проверки (и, возможно, предоставления соответствующего ответа пользователю) и других различных ошибок.
Вам следует использовать is_uploaded_file($_FILES['logo']['tmp_name']), чтобы убедиться, что файл действительно был загружен через POST.
if ($_FILES['logo']['error'] === 0)
это единственно правильный путь
Я бы проверил if (file_exists($_FILES['logo']['tmp_name']))
и посмотрел, работает ли это.
Или, более подходящий вариант (спасибо Baloo): if (is_uploaded_file($_FILES['logo']['tmp_name']))