无法在文件路径中保存图像 - Laravel

时间:2018-02-20 09:43:58

标签: php laravel

下面是我如何将图像路径保存到我的数据库中。现在,当我保存产品和图像时,路径在我的数据库中保存为uploads/catalog/images/3423423423.jpg。但问题是,我找不到文件夹uploads/catalog/images中的图像。

我在做什么不对吗?

public function upload(Request $request, $id)
{

        try {
            $product = Product::findorfail($id);

            if ( $request->hasFile('image'))
            {
               $path =  $request->file('image')->store('uploads/catalog/images');

               $file_name = $request->file('image')->hashName();

               $product->saveProduct($request);

               $product->images()->create(['path' => $file_name]);
        } catch (\Exception $e) {
            throw new \Exception('Try again: ' . $e->getMessage());
        }
}

HTML

<form  id="product-save-form"
          action="{{route('user.product.update', $model->id)}}"
          enctype="multipart/form-data" method="post">
        {{ csrf_field() }}
        <input type="hidden" name="_method" value="put">

    <div  class="row" id="product-save-accordion" data-children=".product-card">
        <div class="col-12 mb-2 mt-2">
            <div class="card product-card  mb-2 mt-2">
                <a data-toggle="collapse" data-parent="#product-save-accordion"
                   class="float-right" href="#basic">
                <!-- <div class="card-header">
                    Basic Details
                </div> -->
                </a>
                <div class="card-body collapse show" id="basic">
                    @include('mage2-ecommerce::admin.product.card.basic', ['editMethod' => true])
                    <input type="file" class="form-control" name="image" data-token="{{ csrf_token() }}">

                </div>

            </div>

        </div>
    </div>

    <div class="form-group">
    <button type="button" class="btn btn-primary" onclick="jQuery('#product-save-form').submit()">
        Edit Product
    </button>
    <button type="button" class="btn" onclick="location='{{ route('user.product.index') }}'">
        Cancel
    </button>
</div>
    </form>

2 个答案:

答案 0 :(得分:2)

我无法弄清楚你为什么要通过findOrFail($ id),因为它没有以id身份存储到数据库中,因此,我还没有把它包括在内在我的函数/查询...

这里是图像存储/移动的通用布局:

  public function upload(Request $request, Product $product)
    {
        if($files=$request->file('image')){
            $path = public_path('uploads/catalog/images');

            $name= $files->getClientOriginalName();

            $files->move($path, $name);

            $product->create([
                'image' => $name
            ]);
        }
    }

答案 1 :(得分:1)

我认为你的代码很好,看起来工作正常。您只需要授予将所有图像保存到该文件夹​​的权限! (即uploads/catalog/images文件夹)

尝试向uploads/catalog/images提供权限:

sudo chmod 777 public/uploads/catalog/images

希望这可以解决您的问题!