-1

PHP 8.0. при загрузке нового изображения в режиме администратора, файл должен переименовываться под id продукта, но добавляется слово "products", в переменную $item передается значение Id товара, в данном случае 16, по при переименовании файла, файл не добавляется в папку, а сохраняется рядом с ней и меняет название на products16.jpg, хотя должен менять на 16.jpg

AdminController.php
function uploadAction(){
    $maxSize = 5 *  2048 * 2048;
$itemId = $_POST['itemId'];

//получаем расширение загружаемого файла
$ext = pathinfo($_FILES['filename']['name'], PATHINFO_EXTENSION);

//создаем имя файла
$newFileName = $itemId.'.'.$ext;

if($_FILES["filename"]["size"] > $maxSize){
    echo ('Размер файла превышает пять мегабайт');
    return;
}

//Загружен ли файл
if(is_uploaded_file($_FILES['filename']['tmp_name'])){  

    //если файл загружен то перемещаем его из временной директории в конечную 
    $res = move_uploaded_file($_FILES['filename']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/images/products' . $newFileName);
    if($res){
        $res = updateProductImage($itemId, $newFileName);
        if($res){
            redirect('/admin/products/');
        }
    }        
} else{

    echo ("Ошибка загрузки файла");
}

}

ProductsModel.php function updateProduct($itemId, $itemName, $itemPrice, $itemStatus, $itemDesc, $itemCat, $newFileName = null) { global $db;

$set = array();

if($itemName){
    $set[] = "`name` = '{$itemName}'";
}

if($itemPrice > 0){
    $set[] = "`price` = '{$itemPrice}'";
}
if($itemStatus !== null){
    $set[] = "`status` = '{$itemStatus}'";
}
if($itemDesc){
    $set[] = "`description` = '{$itemDesc}'";
}
if($itemCat){
    $set[] = "`category_id` = '{$itemCat}'";
}
if($newFileName){
    $set[] = "`image` = '{$newFileName}'";
}

$setStr = implode(", ", $set);
$sql = "UPDATE products
        SET {$setStr}
        WHERE id = '{$itemId}'";

$rs = mysqli_query($db, $sql);
d($itemId);
return $rs;

}

function updateProductImage($itemId, $newFileName) {
$rs = updateProduct($itemId, null, null, null, null, null, $newFileName);

return $rs;

}

adminProducts.tpl

            <td>
                {if $item['image']} {*выводит изображение*}
                    <img src='/images/products/{$item['image']}' width='100' />
                {/if}
                <form action='/admin/upload/' method='post' enctype='multipart/form-data'>
                    <input type="file" name="filename"><br>
                    <input type='hidden' name='itemId' value='{$item['id']}'>
                    <input type='submit' value='Загрузить'><br>
                </form>    
            </td>    

1 Answers1

1

У вас пропущен слэш после products в строке $res = move_uploaded_file($_FILES['filename']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/images/products' . $newFileName);

Должно быть так:

$res = move_uploaded_file($_FILES['filename']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/images/products/' . $newFileName);