【问题标题】:The image failed to upload.on a server laravel图片上传失败。在服务器 laravel 上
【发布时间】:2020-01-24 04:39:08
【问题描述】:

图片上传失败。

链接 https://comedoruniversitariouncp.000webhostapp.com/products/create

该项目在本地服务器上工作, 当我上传到服务器时出现错误

create.blade.php

<form action="{{ route('products.store') }}" method="POST" enctype="multipart/form-data">
        @csrf
        <div class="form-group row">
            <label class="col-form-label col-sm-2">Name</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" name="name">
            </div>
        </div>
        <div class="form-group row">
            <label class="col-form-label col-sm-2">Price</label>
            <div class="col-sm-10">
                <input type="number" class="form-control" name="price" step="0.1">
            </div>
        </div>
        <div class="form-group row">
            <label class="col-form-label col-sm-2">Amount</label>
            <div class="col-sm-10">
                <input type="number" class="form-control" name="amount" >
            </div>
        </div>
        <div class="form-group row">
            <label class="col-form-label col-sm-2">Image</label>
            <div class="col-sm-10">
                <input type="file" class="form-control-file" name="image">
            </div>
        </div>
        <button type="submit" class="btn btn-primary">Create</button>
    </form>

ProductController.php

    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required',
            'price' => 'required',
            'amount' => 'required',
            'image' => 'required|image'
        ]);

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

        $new_name = rand() . '.' . $image->getClientOriginalExtension();
        $image->move(public_path('images'), $new_name);

        Product::create([
            'name' => $request->name,
            'price' => $request->price,
            'amount' => $request->amount,
            'image' => $new_name
        ]);

        return redirect()->route('products.index')->with('message', 'Product created successfully');
    }

【问题讨论】:

  • 错误是什么>

标签: laravel image file deployment crud


【解决方案1】:

正如您提到的在本地但不是远程的作品。我假设upload_max_filesize 大于您上传文件的大小,并且本地和远程都不相同。

【讨论】:

    【解决方案2】:

    您可以使用Storage Facade 作为与本地文件系统交互的便捷方式。

    use Illuminate\Support\Facades\Storage;
    //...
    $new_name = rand() . '.' . $image->getClientOriginalExtension();
    Storage::disk('public')->putFileAs('images', request->file('image'), $new_name);
    //...
    

    Docs

    【讨论】:

      【解决方案3】:

      你应该试试这个

      尝试在图像验证中添加mimetypes

      public function store(Request $request)
          {
              $request->validate([
                  'name' => 'required',
                  'price' => 'required',
                  'amount' => 'required',
                  'image' => 'required|mimes:jpeg,bmp,png'
              ]);
      
              $image = $request->file('image');
      
              $new_name = rand() . '.' . $image->getClientOriginalExtension();
              $image->move(public_path('images'), $new_name);
      
              Product::create([
                  'name' => $request->name,
                  'price' => $request->price,
                  'amount' => $request->amount,
                  'image' => $new_name
              ]);
      
              return redirect()->route('products.index')->with('message', 'Product created successfully');
          }
      

      【讨论】:

        【解决方案4】:

        您应该尝试编写此代码,

        您可以更改零件代码:

        $image->move(public_path('images'), $new_name);
        

        成为代码:

        $image->move(public_path('images'.$new_name));
        

        这是代码,100% 对我有用。

        【讨论】:

          猜你喜欢
          • 2018-10-28
          • 1970-01-01
          • 2019-06-30
          • 2018-12-15
          • 1970-01-01
          • 2016-08-21
          • 2022-08-17
          • 1970-01-01
          • 2019-07-20
          相关资源
          最近更新 更多