【问题标题】:Why is my image not storing in a specified folder in Laravel 5.6?为什么我的图像没有存储在 Laravel 5.6 的指定文件夹中?
【发布时间】:2018-06-30 13:34:05
【问题描述】:

在我的表单中,我要求上传一张图片。然后我已经验证了它并且它有效。但是文件没有存储在uploads文件夹中。

这是我的 ProductController 的 sn-p:

public function store(Request $request)
{
    // Validate fields
    $this->validate($request, [
        'product_name' => 'required',
        'product_price' => 'required',
        'product_desc' => 'required',
        'product_img' => 'image|required'
    ]);

    // Upload image
    if($request->hasFile('image')) {
        app()->make('path.public/uploads');
        $image = $request->image;

        $image->move('uploads', $image->getClientOriginalName());


    }

    /*// Save the data into database
    Product::create([
        'name' => $request->product_name,
        'price' => $request->product_price,
        'description' => $request->product_desc,
        'image' => $request->image->getClientOriginalName()
    ]);


    // Echo a session message
    $request->session()->flash('msg', 'Your product has been added');


    // Redirect to view page
    return redirect('/products');*/

}

我已经尝试查看其他可能的解决方案,但其他问题已经在将图像存储在数据库中。我还尝试检查 uploads 是否是一个目录并且存在,并且确实存在。

有人可以帮忙吗?谢谢。

【问题讨论】:

    标签: php laravel file-handling laravel-5.6


    【解决方案1】:

    试试这个:official documentation:它在你的控制器中应该是这样的:

    if($request->hasFile('image')) { $request->file('image')->store('uplodads/', 'public'); }

    默认情况下,这会将图像存储在/storage/app/public/uploads 中。您还可以更改/config/filesystems.php 中的public 路径。然后,您可以使用asset('storage/uploads'.$img_name) 访问该文件(如果您链接了存储)。

    【讨论】:

    • 我还没有更改 public 路径,因为我只想使用函数 store() 来使用上传文件夹。关于代码,我已经尝试过并更改了我的控制器,但图像仍然无法保存。
    • uploads 文件夹是否出现在storage/app/public 中?该应用程序还启用了调试并且不会引发任何错误?还要确保你使用 Illuminate\Http\Request; 而不是 Request 外观。
    • 谢谢,第二个参数 (store('uplodads/', 'public')) 解决了我的问题,因为它现在存储在 storage/public 文件夹下。在 Laravel 7 上
    【解决方案2】:
    app()->make('path.public/uploads');
    

    【讨论】:

      【解决方案3】:

      我已经解决了。变量一直都是错误的。我不是product_img,而是image

      这是更新后的代码:

          // Validate fields
          $this->validate($request, [
              'product_name' => 'required',
              'product_price' => 'required',
              'product_desc' => 'required',
              'product_img' => 'image|required'
          ]);
      
          // Upload image
          if($request->hasFile('product_img')) {
              $image = $request->product_img;         
              $image->move('uploads', $image->getClientOriginalName());   
          }  
      

      【讨论】:

        猜你喜欢
        • 2018-08-04
        • 1970-01-01
        • 2018-12-17
        • 2019-11-16
        • 1970-01-01
        • 1970-01-01
        • 2017-09-03
        • 2020-12-19
        • 1970-01-01
        相关资源
        最近更新 更多