【问题标题】:How to upload image file in Laravel?如何在 Laravel 中上传图片文件?
【发布时间】:2016-11-28 01:55:36
【问题描述】:

我有一个包含多个字段的表单,包括我想用作图像上传器的上传文件按钮 (<input type="file" name="image" id="image" class='image'>)。其他字段工作正常并上传数据库中的所有内容,但是,在图像字段中,我上传的文件的文件名给了我这个文件名:

C:\laragon\tmp\php859A.tmp

... 我该怎么办?谢谢:)这里是代码:

这是表格:

<html>
<div class="col-md-offset-4 col-md-4">
        <form action="{{ $action }}" method="POST" enctype="multipart/form-data">
        <h1> {{ $header }} </h1>
            <div class="form-group">
                <label for="exampleInputEmail1">Name</label>
                <input type="text" class="form-control" id="name" name="name" placeholder="Name" value="{{ $name }}">
            </div>
            <div class="form-group">
                <label for="exampleInputPassword1">Description</label>
                <input type="text" class="form-control" id="description" name="description" placeholder="Description" value="{{ $description }}">
            </div>
            <div class="form-group">
                <label for="exampleInputPassword1">Price</label>
                <input type="number" class="form-control" id="product_price"  name="product_price" placeholder="Price" value="{{ $product_price }}">                    
            </div>

            <div class="form-group">
                <label for="image">SELECT IMAGE TO UPLOAD</label><br>
                <input type="file"  name="image" id="image" class='image'>
            </div>

            <div class="col-md-offset-2">
            {!! csrf_field() !!}
            <button type="submit" class="btn btn-default col-md-5" style="background:#0099ff; color:#f2f2f2;">{{ $button }}</button>
            <button type="submit" class="btn btn-default col-md-5" style="background:#f4f4f4; color:#000;"><a href="{{ route('beverages') }}">Cancel</a></button>
            </div>
        </form>
    </div>
</html>

这些是我在控制器中创建和存储的函数:

public function create()
{
  $data['action']           = route('beverage_store');  
  $data['button']           = 'Add';
  $data['header']           = 'ADD BEVERAGE';
  $data['name']             = old('name');  
  $data['description']      = old('description');    
  $data['product_price']    = old('product_price');
  $data['image']            = old('image');
  return view('layouts.beverages.beverageform',$data);
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{

    $input = $request->all();
    #dd($input);
    BeveragesModel::create($input);
    return redirect()->route('beverages');
}

:)

【问题讨论】:

    标签: html css laravel


    【解决方案1】:

    假设您仅将文件名存储在数据库表中,那么您必须将图像上传到其他地方。所以你可以创建类似的东西:

    private function upload($request)
    {
        $image_name = '';
        if($request->hasFile('image'))
        {
            $image = $request->file('image');
            $image_name = md5(uniqid()) . '.' . $image->getClientOriginalExtension();
            $image->move(public_path() . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'beverages' . DIRECTORY_SEPARATOR, $image_name);
        }
        return $image_name;
    }
    
    public function store(Request $request)
    {
        $image_name = $this->upload($request);
        $input = $request->all();
        $beverage = BeveragesModel::create($input);
        $beverage->image = $image_name;
        $beverage->save();
        return redirect()->route('beverages');
    }
    

    【讨论】:

    • 最好将/ 替换为DIRECTORY_SEPARATOR。例如$image-&gt;move(public_path() . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'beverages' . DIRECTORY_SEPARATOR, $image_name);
    • 赞成。完整的答案和解释。
    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2016-10-10
    • 2020-07-03
    • 2021-03-13
    • 1970-01-01
    相关资源
    最近更新 更多