【问题标题】:Laravel : $request->hasFile() is not working Call to a member function getClientOriginalExtension() on stringLaravel:$request->hasFile() 不起作用调用字符串上的成员函数 getClientOriginalExtension()
【发布时间】:2018-08-25 08:05:05
【问题描述】:

我正在使用 laravel 5.6 使用 HTML 表单上传文件,但在控制器中检索文件时遇到问题。

当我使用这种方式检索它时,它返回 ok return $request;它正在控制器中检索,但不在 hasFile() 函数中或 getClientOriginalExtension()

我已经搜索了很多网站,但问题仍然存在。所有我匹配但不工作。

错误:“在 null 上调用成员函数 getClientOriginalExtension()”

HTML 表单视图:

<form  action="{{url('/changeProductImage')}}" enctype="multipart/form-data" method="post">
    {{csrf_field()}}
    <input type="file" name="photo" id="photo"  class="btn btn-secondary">
    <hr>
    <button type="submit" value="upload" class="form-control btn btn-primary btn-fill btn-lg">Upload Image</button>
</form>

路线:

Route::post('/changeProductImage','ProductsController@upload');

控制器:

function upload(Request $request)
{
     $image = $request->file('photo');

     $new_name = rand() . '.' . $image->getClientOriginalExtension();

     $image->move(public_path('images'), $new_name);
     return back()->with('success', 'Image Uploaded Successfully');
}

【问题讨论】:

  • var_dump($request-&gt;file('photo')) 看看你得到了什么。
  • 兄弟它返回 (NULL) 它总是返回 null 无法理解为什么??
  • 如果你在$image = $request-&gt;file('photo');上面做dd($request-&gt;all())会得到什么?
  • 找不到文件方法

标签: php laravel-5 laravel-5.6 laravel-request


【解决方案1】:

看这段代码真的很难说有什么问题。假设你真的是这样发送的(例如,你不在某处使用 AJAX),它应该可以工作。

我会做什么,我会确保在你的控制器中你有:

use Illuminate\Http\Request;

只是为了确保您在控制器中的这个请求确实是这个。

另外请记住,您可能应该进行一些验证以确保该文件确实是您想要的类型,或者至少您应该有一些额外的逻辑,例如:

function upload(Request $request)
{
     if (!$request->hasFile('photo') {
        return back()->with('error', 'Missing image!');
     }

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

     $new_name = rand() . '.' . $image->getClientOriginalExtension();

     $image->move(public_path('images'), $new_name);
     return back()->with('success', 'Image Uploaded Successfully');
}

【讨论】:

  • 谢谢,伙计,它现在正在工作,但我不知道如何!哈哈,除了拍打键盘,我什么也没改变,当我再次转动笔记本电脑时它进入睡眠状态,它真的在工作,我没有做任何改变,甚至清除缓存等我不知道为什么。不过谢谢你的建议。
【解决方案2】:

可能你正在使用这个语句 使用 Illuminate\Support\Facades\Request;

安装在 使用 Illuminate\Http\Request;

【讨论】:

    猜你喜欢
    • 2020-01-08
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    相关资源
    最近更新 更多