Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Через админку не получается загрузить картинку не прописывается путь

POKAMOLODOY Знаток (254), открыт 3 часа назад
Кто знает в php почему не показывает изображение хотя в папку uploads все сохраняется

Почему-то картинка в базе данных сохраняется без пути
в productcontroller
$ThumbnailName = '';
if ($image = $request->file('Thumbnail')) {
$ThumbnailName = time() . '-' . $image->getClientOriginalName();
$image->move('images/uploads', $ThumbnailName);
}Form.Blade
<div class="col-md-3">
<label for="Thumbnail" class="form-label">Миниатюра</label>
<input type="file" accept="image/*" class="form-control 'Thumbnail' is-invalid @enderror"
name="Thumbnail" $product value="{{$product->Thumbnail}}" @endisset>
</div>не знаю может это поможет?
7 ответов
Егор Виленский Профи (622) 3 часа назад
Проблема возникает из-за того, что в базе данных сохраняется только имя файла, а не полный путь. Вот как это исправить:

---

### **1. Исправьте код в `ProductController`:**
Добавьте путь к папке при сохранении имени файла в БД:
```php
$ThumbnailName = '';
if ($image = $request->file('Thumbnail')) {
$ThumbnailName = time() . '-' . $image->getClientOriginalName();
$image->move('images/uploads', $ThumbnailName);
// Сохраните полный путь
$ThumbnailName = 'images/uploads/' . $ThumbnailName; // Добавьте эту строку
}
$product->Thumbnail = $ThumbnailName;
$product->save();
```

---

### **2. Проверьте путь к папке:**
- Убедитесь, что папка `public/images/uploads` существует и доступна для записи.
- Если используется Laravel, путь должен быть `public/storage/images/uploads`, и нужно создать симлинк:
```bash
php artisan storage:link
```

---

### **3. Исправьте вывод изображения в Blade:**
Используйте функцию `asset()`, чтобы получить корректный URL:
```php
<img src="{{ asset($product->Thumbnail) }}" alt="Thumbnail">
```

---

### **4. Проверьте права доступа:**
Выполните в терминале:
```bash
chmod -R 755 public/images/uploads
```

---

### **5. Дополнительные проверки:**
- Убедитесь, что в таблице `products` поле `Thumbnail` имеет тип `VARCHAR` с достаточной длиной.
- Если ошибка сохраняется, добавьте проверку на успешное сохранение файла:
```php
if ($image->move(...)) {
// Успешно
} else {
dd('Ошибка загрузки файла');
}
```

**Итог:** После этих изменений путь к изображению будет сохраняться в БД, и картинка отобразится корректно.
kat Знаток (401) 3 часа назад
надо перед сохранением файла в папку прописывать путь в переменную для базы данных
POKAMOLODOYЗнаток (254) 3 часа назад
А можно по подробней?
roman Знаток (395) 3 часа назад
может ты просто не сохраняешь путь в базу данных добавь туда путь к картинке
ele Знаток (484) 3 часа назад
может в контроллере забыла прописать $product->Thumbnail = $ThumbnailName перед сохранением в базу
POKAMOLODOYЗнаток (254) 3 часа назад
есть уже делал
Анна Субхонкулова Профи (820) 3 часа назад
чел походу в контроллере путь до картинки в базу не записывается добавь $product->Thumbnail = 'images/uploads/' . $ThumbnailName
Glynn Знаток (356) 2 часа назад
потому что переменная $ThumbnailName не сохраняется в базу добавь её в массив для insert
Похожие вопросы