Laravel 5.5 сохраняет имя файла в базе данных как * .tmp - PullRequest
0 голосов
/ 20 мая 2018

Я хочу сохранить свой пост со связанным изображением / Моя модель:

class Performer extends Model
{
    protected $fillable = ['title','slug','logoimage','description','address','toplace','exp','workers','published','created_by','modified_by'];

    public function categories() {
        return $this->morphToMany('App\Category', 'categoryable');
    }

    public function SetSlugAttribute($value)
  {
    $this->attributes['slug'] = Str::slug(mb_substr($this->title, 0, 40) . "-". \Carbon\Carbon::now()->format('dmyHi'), '-');
  }
}

Мой контроллер:

public function store(Request $request) {

       // dd($request);
        $performer = Performer::create($request->all());

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

        if ($request->hasfile('logoimage')){
          $image = $request->file('logoimage');
          $filename = time().'.'.$image->getClientOriginalExtension();
          $location = public_path('images/uploads/logo/'.$filename);
          Image::make($image)->resize(100, 100)->save($location);
          // dd($filename); - return normal filename, 857857857.jpg as example
          $performer->logoimage= $filename;

        }


        return redirect()->route('admin.performer.index');
    }

Вид:

<input type="file" class="form-control" name="logoimage">

enctype =«multipart / form-data» включен в форму.

Результат: Изображения, сохраненные в папке public \ images \ uploads \ logo, обычно с именами * .jpg В базу данных (столбец logoimage) сохранены как C: \ xampp\ TMP \ php915C.tmp.ЗАЧЕМ?Как это исправить?

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Не используйте GetClientOriginalExtension.Вместо этого используйте GetClientOriginalName для лучшей практики.Предложенный метод работает, но вам не нужно добавлять расширение.Причина, по которой вы получите .tmp, заключается в том, что вы не получаете оригинальное имя файла.Но, как я уже говорил, вы можете использовать расширение в конце кода.Надеюсь, это было полезно для всех, кто сталкивался с этим:)

0 голосов
/ 20 мая 2018

Проблема решена.Я добавил $ Performer-> Save ();к моему контроллеру - у меня это нормально работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...