Задать вопрос
@xFreake

Почем записывается не верный путь файлов Lavel?

При записи в базу пихается вот такой путь файла
D:\OSPanel\userdata\temp\php286.tmp

Вот такой код
public function update(Request $request, Product $product)
    {
        $file = Input::file('image');

        $destinationPath = public_path(). '/uploads/';
        $filename = $file->getClientOriginalName();
        $file->move($destinationPath, rand(1,9999999).$filename);
        $file_path = '/public/uploads/'.$filename;
        $request->image = $file_path;

        $product->categories()->detach();
        if ($request->input('categories')) {
            $product->categories()->attach($request->input('categories'));
        }


        return redirect()->route('admin.product.index');
    }
  • Вопрос задан
  • 78 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
xpert13
@xpert13
Full Stack Developer
1. Не вижу в этом коде вообще записи пути к файлу в БД. Скорее всего вы это пытаетесь сделать здесь $request->image = $file_path;. Я примерно понимаю зачем вы так делаете, но я бы советовал отказаться от подобных финтов по отношению базовых классов (если это не описано в документации). Но в любом случае дальше по коду есть использование только значения поля categories, но нету картинки. Скорее всего вы надеетесь на какой-то обсервер и в нём опять обращаетесь к request, но там не будет тех изменений, что вы в него внесли, так как вы изменили только вашу локальную переменную.

2. Старайтесь избегать использование фасадов (Input::file('image')), они медленные. Да и не понятно зачем вы это делаете, когда имеете переменную $request

3. Не используйте rand для создания уникальных имен файлов. Шанс на совпадения хоть и крайне мал, но он есть. Лучше один раз создать нормальный метод именования файлов, чем делать так как сейчас

4. Не складируйте все загруженные файлы в одну папку. Когда количество файлов перевалит за тысячу - будут заметные тормоза при обращении в эту папку
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы