繁体   English   中英

在laravel 8中上传图片作为可选

[英]upload image as optional in laravel 8

我想使用 laravel 8 上传图片,我使用以下代码:

    $post = new Post;

    $upload_image_name = time().'_'.$req->image_name->getClientOriginalName();
    $req->image_name->move('uploads', $upload_image_name); 

    $post->title = $req->input('title');
    $post->image_name = $upload_image_name;
    $post->save();

它工作正常,但是当图像为空时,我Call to a member function getClientOriginalName() on null出错。

这是因为,令人惊讶的是,图像是空的,而图像是空的

添加条件以检查上传的图像

$post = new Post;
$post->title = $req->input('title');
if($req->image_name)
    $upload_image_name = time().'_'.$req->image_name->getClientOriginalName();
    $req->image_name->move('uploads', $upload_image_name); 
    $post->image_name = $upload_image_name;
}           
$post->save();

如果需要图像 - 在开始时添加验证 - 但正确的方法 - 在表单请求中进行验证

$request->validate([
    'image_name' => 'required|image',
    'title'      => 'required|string'
]);

如果不需要图像 - 更改迁移并使 posts.image_name 可为空

我使用以下代码,但我认为这不是传统方式。 这是代码:

if($req->hasFile('image_name')){
    $upload_image_name = time().'_'.$req->image_name->getClientOriginalName();
    $req->image_name->move('uploads', $upload_image_name);        
    }
    else
    $upload_image_name = "Noimage";

   $post = new Post;
    $post->title = $req->input('title');       
    $post->image_name = $upload_image_name;
    $post->save();

因为我使用了我的上一个 Laravel 项目。

$image = $request->file('thumbnail');
    if (isset($image)) {
        $imageName = date('y_m_d') . "_" . uniqid().".".$image->getClientOriginalExtension();
        if (!Storage::disk('public')->exists('thumbnail')) {
            Storage::disk('public')->makeDirectory('thumbnail');
        }
        $postImage = Image::make($image)->stream();
        Storage::disk('public')->put('thumbnail/' . $imageName, $postImage);
    } else {
        $imageName = "";
    }


$post = new Post;
$post->title = $request->title;
$post->image_name = $imageName;
$post->save();

image_name 列应该可以为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM