Я нахожусь в процессе создания условия. Условие состоит в том, чтобы сразу проверить, не является ли какой-либо из файлов основными файлами изображений (png, jpg и т. Д. - файлы, показанные в условии) (в if). Если это так, то файл file_put_contents должен работать. Если загружаются только базовые файлы изображений, остальное должно работать.
На данный момент остальное никогда не запускается. Например, если я загружаю один файл с расширением .png, должен выполняться оператор else.
Когда кто-то добавляет файл, я проверяю тип файла с помощью $uploadedFileTypes = $fu->getImageFileTypes();
и затем внедряю его в список. Это 100% работает.
Вот пример того, что я хочу, чтобы произошло:
Если кто-то загрузит два файла - .png и .stp, тогда должен запускаться if. Я хочу, чтобы остальные запускались только в том случае, если загружаемые файлы являются основными файлами изображений. Есть ли лучший способ сделать это?
Затем я использую функцию strpos для проверки каждого типа файла изображения, который я указал.
if (strpos($fileTypeString,$pdf) || strpos($fileTypeString,$jpg) || strpos($fileTypeString,$jpeg) || strpos($fileTypeString,$png) || strpos($fileTypeString,$gif) === false) {
Кто-нибудь видит, что я делаю неправильно?
$date = new DateTime();
$fu = new fileUpload();
$filename = $fu->upload();
$uploadedFileTypes = $fu->getImageFileTypes();
$fileTypeString = implode( ", ", $uploadedFileTypes );
$pdf = "pdf";
$jpg = "jpg";
$jpeg = "jpeg";
$png = "png";
$gif = "gif";
file_put_contents('file_type_log', "\n[{$date->format('Y-m-d H:i:s')}]" . print_r($uploadedFileTypes, true), FILE_APPEND);
foreach ($_FILES as $file) {
foreach($file['name'] as $key => $value) {
if (!empty($value)) { //empty string
if ($file['error'][$key] != 4) {
if (strpos($fileTypeString,$pdf) || strpos($fileTypeString,$jpg) || strpos($fileTypeString,$jpeg) || strpos($fileTypeString,$png) || strpos($fileTypeString,$gif) === false) {
file_put_contents('file_norm_log', "\n[{$date->format('Y-m-d H:i:s')}]" . print_r('There were other types of files uploaded', true), FILE_APPEND);
} else {
$out = (count($filename) > 1 ? 'Multiple files were' : 'A file was'). ' uploaded. You can download ' . (count($filename) > 1 ? 'them' : 'the file'). ' from:</ul>';
foreach ($filename as $indFile) {
//print_r($template);
$out .= "<li><a href='/php/uploads/{$indFile}'>{$indFile}</a></li>";
}
$out .= '</ul>';
$template = str_replace("{filename}", $out, $template);
}
} else { //error code IS #4
//echo "error code is 4";
}
} else {
//echo "name is empty!";
$template = str_replace("{filename}", '', $template);
}
}
}
Редактировать, Новый код с другим подходом:
$date = new DateTime();
$fu = new fileUpload();
$filename = $fu->upload();
$uploadedFileTypes = $fu->getImageFileTypes();
$fileTypeString = implode( ", ", $uploadedFileTypes);
$imageTypes = ["pdf","jpg", "jpeg", "png", "gif"];
$nonImgFiles = false;
$imgFiles = false;
if (!in_array($uploadedFileTypes, $imageTypes)) {
$nonImgFiles = true;
}
if (in_array($uploadedFileTypes, $imageTypes)) {
$imgFiles = true;
}
foreach ($_FILES as $file) {
foreach($file['name'] as $key => $value) {
if (!empty($value)) { //empty string
if ($file['error'][$key] != 4) {
if ($nonImgFiles == true) {
file_put_contents('file_norm_log', "\n[{$date->format('Y-m-d H:i:s')}]" . print_r('There were other types of files uploaded', true), FILE_APPEND);
} else {
}