我想在我的应用中上传文件。 这是刀片文件。
<form action="/fileUploader " files="true" method="post" role="form" name="file" id="chan" >
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="panel panel-default">
<label>Please Select a File to Upload</label>
<input type="image">
<button type="submit" name ="Upload_File">Upload File</button>
</div>
</form>
这是我的控制器文件
public function viewFile()
{
return View::make('/fileUploader');
}
public function showfileupload(Request $request)
{
$file = $request -> file('image');
// show the file name
echo 'File Name : '.$file->getClientOriginalName();
echo '<br>';
// show file extensions
echo 'File Extensions : '.$file->getClientOriginalExtension();
echo '<br>';
// show file path
echo 'File Path : '.$file->getRealPath();
echo '<br>';
// show file size
echo 'File Size : '.$file->getSize();
echo '<br>';
// show file mime type
echo 'File Mime Type : '.$file->getMimeType();
echo '<br>';
// move uploaded File
$destinationPath = 'uploads';
$file->move($destinationPath,$file->getClientOriginalName());
}
这是web.php文件
Route::get('/fileUploader', 'channelController@viewFile');
Route::post('/fileUploader', 'channelController@showfileupload');
我在channelController.php第48行收到一个名为FatalThrowableError的错误: 在null上调用成员函数getClientOriginalName()。
我该如何解决这个问题
答案 0 :(得分:1)
最有可能的是,您试图在一个不存在的对象上调用方法 - getClientOriginalName()
,因此它为空。这与您看到的错误消息相吻合。
我不确定原因,但我们可以开始倒退了。在尝试hasFile()
之前,让我们使用带有move()
方法的if语句来验证文件是否实际存在于请求中。
if ($request->hasFile('image')) {
$file->move($destinationPath,$file->getClientOriginalName());
}
如果执行上述操作,错误是否仍然存在?
以下是Laravel 5.3 Docs on file uploads。它可能会给你更多的想法。
如果您发现用户正在发布文件且hasFile()
仍然返回布尔值FALSE,那么您可能想要深入了解php.ini文件并查看{{1}或Post_max_size
以确保我们不会阻止大型上传。
答案 1 :(得分:0)
查看强>
{!! Form::open(['route'=>'fileUploader', 'id'=>'chan', 'files' => true] )!!}
<div class="panel panel-default">
<label>Please Select a File to Upload</label>
<input type="file" name="image">
<button type="submit">Upload File</button>
</div>
{!! Form::close()!!}
<强>路线强>
Route::get('/fileUploader', 'channelController@viewFile');
Route::post('fileUploader', array(
'as' => 'fileUploader',
'uses' => 'channelController@showfileupload',
));
<强> CONTROLLER 强>
public function showfileupload(Request $request){
$file = $request -> file('image');
dd($file); // This work well for me and return information about the image
}
复制并过去!我希望它能奏效,让我知道任何错误和结果!