为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Laravel 中存储图像而不是 base64

如何在 Laravel 中存储图像而不是 base64

PHP
拉莫斯之舞 2022-10-14 10:38:41
再会。拜托,我需要你的帮助。建立一个 laravel 网站,其中 tinymce 在一些文本区域中实现。挑战在于,如果在编辑器中上传图像,它们将存储为 base64 编码。这会减慢服务器的速度。我不得不在我的数据库中将我的数据类型更改为 longtext。如何存储图像而不是 base64?以及如何读取存储的图像。我的代码显示在我的控制器下方public function create(Request $request){        $categories = BlogCategory::all();        $tags = Tag::all();        if($request->isMethod('post')){            //dd($request);            $data = $request->except('name');            $post = new Post;            //Title            $post->title = $request->title;            //Slug            $post->publish_date = new Carbon;            $slug = $this->createSlug($request->title);            $post->slug = $slug;            //Category            if($request->category_id == "Choose Category")            {                Session::flash('failure','Please Select A Category To Proceed!');                return redirect()->back();            }else{                $post->category_id = $request->category_id;            }            //Body            $post->body = $request->body;            //Author            if(isset($request->author)){                $post->author = $request->author;                $post->author_slug = Str::slug($post->author,'-');            }else{                $post->author = "";                $post->author_slug = "";            }            //User ID            $post->user_id = Auth::user()->id;            //Keywords            if(isset($request->keywords)){                $post->keywords = $request->keywords;            }else{                $post->keywords = "";            }            //Description            if(isset($request->description)){                $post->description = $request->description;            }else{                $post->description = "";            }
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

您的标题/描述说明了一些内容,但您的代码说明了其他内容。

  • 要将文件存储在数据库中,列类型必须是 BINARY/BLOB。

  • 要将文件名存储在数据库中并将文件存储在磁盘上,列类型应该是相对于最大文件名长度的 VARCHAR。

除非文件很小,否则不要将文件转换为 base64,因为它们的大小会增加大约 x3 倍。

要将文件存储数据库中,您可以使用此代码。在您的控制器内部:

if ($request->hasFile('file'))

{

    // If you want to resize the image, use the following method to get temporary file's path.

    $request->file('file')->getPathName(); 


    // `get()` retrieves file's content in binary mode

    $post->image = request->file('file')->get(); 

}


查看完整回答
反对 回复 2022-10-14
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信