Php 在laravel 5中找不到输入类

Php 在laravel 5中找不到输入类,php,json,laravel,laravel-artisan,Php,Json,Laravel,Laravel Artisan,我想将通过表单上传的文件保存到一个json文件中,为此,我需要通过请求或输入类方法轻松获取post数据 问题是,无论何时使用请求或输入,我都无法获取诸如getClientOriginalName之类的方法来获取文件名和文件的其他参数 我的FileController代码如下: <?php namespace App\Http\Controllers; use App\Http\Requests; use Illuminate\Http\Request; // th

我想将通过表单上传的文件保存到一个json文件中,为此,我需要通过请求或输入类方法轻松获取post数据

问题是,无论何时使用请求或输入,我都无法获取诸如getClientOriginalName之类的方法来获取文件名和文件的其他参数

我的FileController代码如下:

<?php namespace App\Http\Controllers;

use App\Http\Requests;

use Illuminate\Http\Request;            // this handles both for Input and Request as in laravel 5.1 documentation
use Illuminate\Support\Facades\Input;   // though added some classes to get work
use Illuminate\Support\Facades\File;    // though added some classes to get work
use Illuminate\Filesystem\Filesystem;   // though added some classes to get work

class FileController extends Controller
{

public function index()
{
    $files = $this->getAllData();
    return view('document.index', compact('files'));
}


public function create()
{
    return view('document.create');
}

public function store(Request $request)
{

    $name = $request->input('title');

    echo $name;

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

    if($request->hasFile('afile')) {

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

        print_r($file); // return array of uploaded as expected

        $filename = $file->getClientOriginalName(); // not working

        // or 

        $filename = Input::file('afile')->getClientOriginalName(); // not working

        echo $filename;
    }

    // print_r($file);

    // $data= array('title'=>$name, 'afile'=>$file);

    // $this->create_entry($data);

    // return redirect('document');
}
}
唯一的问题是,尽管我用过,我还是找不到解决问题的方法

use Input;

输入的每个方法都无法检查其有效性或无效性

我参考的每个教程或Laravel5中的文档都使用与我在代码中使用的相同的方法。 因此,任何形式的建议或解决方案都是非常受欢迎的


文档中使用的函数正在工作,但除此之外没有其他方法。

您缺少输入facade的use语句。在use语句中添加以下内容

use Illuminate\Support\Facades\Input;
这对我有用

\Input::file('file')->getClientOriginalName();
你可以试试这个:

$filename = $file->getClientOriginalName();
由于您已经使用了以下各项:

$file = $request->file('afile');
file
方法返回
Symfony\Component\HttpFoundation\file\UploadedFile
的实例,在这种情况下,该实例已缓存在
$file
变量中

此外,为了确保上传成功,您可以使用以下方式进行检查:

if($request->hasFile('afile')) {

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

    $filename = $file->getClientOriginalName() .'.'. $file->getExtension();
}

在表单中打开标记添加
'files'=>true

{!! Form::open(array('files' => true, ....)) !!}
在控制器中,首先检查文件是否已正确上载

if (!Input::file('afile')->isValid())
{
    // return error 50x
}

$filename = Input::file('afile')->getClientOriginalName();

无法将方法应用于非对象意味着Input::file(…)返回null,因此该文件未上载或不存在。然后,当您从空值调用
->getClientOriginalName()
时,php抛出一个异常。

请执行dd($request->file('afile');似乎将
use-illumb\Support\Facades\Input
添加到您的使用语句中是无效的。文件的数组是:array([0]=>Symfony\Component\HttpFoundation\File\UploadedFile对象([test:Symfony\Component\HttpFoundation\File\UploadedFile:private]=>[originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private]=>新建文件\u 11.txt[mimeType:Symfony\Component\HttpFoundation\file\UploadedFile:private]=>text/plain[size:Symfony\Component\HttpFoundation\file\UploadedFile:private]=>0[路径名:SplFileInfo:private]=>E:\xampp\tmp\php2B0C.tmp[文件名:SplFileInfo:private]=>php2B0C.tmp)仍在FileController.php第36行中获取错误::FatalErrorException:在非objectThan上调用成员函数getClientOriginalName(),以确保未上载文件。$request->hasFile('afile')返回true,但行$filename=$file->getClientOriginalName()。$file->getExtension();仍然不工作这个api在我的laravel 5中没有集成。我的供应商文件夹中有这个文件。代码输入::file('afile')->isValid()本身不起作用我也有,但仍然不起作用。laravel5中有没有关于这个的bug,或者我的代码中可能有一些小错误,而我的眼睛还没有发现。
{!! Form::open(array('files' => true, ....)) !!}
if (!Input::file('afile')->isValid())
{
    // return error 50x
}

$filename = Input::file('afile')->getClientOriginalName();