Php 在laravel 5中找不到输入类
我想将通过表单上传的文件保存到一个json文件中,为此,我需要通过请求或输入类方法轻松获取post数据 问题是,无论何时使用请求或输入,我都无法获取诸如getClientOriginalName之类的方法来获取文件名和文件的其他参数 我的FileController代码如下: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
<?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();