【问题标题】:Laravel upload image 'controlller'Laravel 上传图片“控制器”
【发布时间】:2019-09-18 09:28:03
【问题描述】:

我正在关注this tutorial 在 Laravel 中上传图片。

它说“成功创建控制器后,转到app/controllers/ImageController.php并输入以下代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Validator,Redirect,Response,File;

class ImageController extends Controller
{

    public function index()
    {
        return view('image');
    }

    public function save()
    {
       request()->validate([
            'fileUpload' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
       ]);
       if ($files = $request->file('fileUpload')) {
           $destinationPath = 'public/image/'; // upload path
           $profileImage = date('YmdHis') . "." . $files->getClientOriginalExtension();
           $files->move($destinationPath, $profileImage);
        }
        return Redirect::to("image")
        ->withSuccess('Great! Image has been successfully uploaded.');

    }
}

但是,我的代码编辑器在此行中检测到带有单词 request 的错误

 if ($files = $request->file('fileUpload')) {

有人知道为什么吗?

【问题讨论】:

  • 如果有适合您的答案,请将您的问题标记为已回答。
  • 没有答案对我有用。

标签: laravel image upload


【解决方案1】:

如果要使用变量$request,需要将其作为参数注入到方法中。

否则,请使用帮助程序 request(),就像您在验证时所做的那样。

public function save()
{
   request()->validate([
       'fileUpload' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
   ]);
   if ($files = request()->file('fileUpload')) {
       $destinationPath = 'public/image/'; // upload path
       $profileImage = date('YmdHis') . "." . $files->getClientOriginalExtension();
       $files->move($destinationPath, $profileImage);
    }
    return Redirect::to("image")->withSuccess('Great! Image has been successfully uploaded.');
}

使用变量$request

public function save(Request $request)
{
   $request->validate([
       'fileUpload' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
   ]);
   if ($files = $request->file('fileUpload')) {
       $destinationPath = 'public/image/'; // upload path
       $profileImage = date('YmdHis') . "." . $files->getClientOriginalExtension();
       $files->move($destinationPath, $profileImage);
    }
    return Redirect::to("image")->withSuccess('Great! Image has been successfully uploaded.');
}

【讨论】:

  • 使用“public function save(Request $request)”应该足够了,因为命名空间已经添加到控制器的顶部。
  • @AhmadKarimi 没有注意到它已经存在于控制器中。我把它放进去是为了精确。已编辑
  • 上周我完成了很多很多照片上传教程,但都没有成功。谁能指点我一个简单的教程,它向我展示了如何将照片上传到 MySQL?
  • @PHP75DJ 在您当前的代码中什么不起作用(路径除外,删除public/ 并使用$files-&gt;guessExtension() 获取扩展名)?
  • PHP75DJ,如果这个答案对你有用,请接受它作为最佳答案,这样你会激励@N69S 他越来越多地回答,因此社区会发展壮大并变得更有响应。
【解决方案2】:

检查您是否忘记在表单中添加enctype="multipart/form-data" &lt;form action="{{url('dev/tester')}}" method="post" enctype="multipart/form-data"&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多