Laravel 5.5将文件名保存到数据库* .tmp

时间:2018-05-20 09:03:51

标签: php laravel laravel-5.5 intervention

我想用链接图片保存我的帖子/ 我的模特:

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”。

结果: 图像通常以* .jpg名称保存到文件夹public \ images \ uploads \ logo 将数据库(logoimage列)保存为C:\ xampp \ tmp \ php915C.tmp。 为什么? 如何解决?

2 个答案:

答案 0 :(得分:0)

问题解决了。我添加了$ performer-&gt; save();对我的控制器 - 它对我来说很好。

答案 1 :(得分:0)

不要使用GetClientOriginalExtension。使用GetClientOriginalName代替最佳做法。您提出的方法有效,但您没有“添加”扩展名。你得到.tmp的原因是因为你没有得到原始文件名。但就像我提到的那样,你也可以在代码末尾使用扩展。 希望这对遇到这个问题的人有帮助:))