使用 Laravel 5.3 上传文件
Upload file using Laravel 5.3
我想在我的应用程序中上传文件。
这是 blade 文件。
<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()。
我该如何解决这个问题
很可能,您正在尝试调用一个方法 - getClientOriginalName()
- 在一个不存在的对象上,所以它是空的。这与您看到的错误消息一致。
我不确定为什么,但我们可以开始倒退。让我们使用带有 hasFile()
方法的 if 语句来验证文件在尝试 move()
之前是否确实存在于请求中。
if ($request->hasFile('image')) {
$file->move($destinationPath,$file->getClientOriginalName());
}
如果执行以上操作,错误是否仍然存在?
这是Laravel 5.3 Docs on file uploads。它可能会给你更多的想法。
如果您发现用户正在发布文件并且 hasFile()
仍然返回布尔值 FALSE,那么您可能需要深入研究 php.ini 文件并查看 Post_max_size
或 upload_max_size values
以确保我们不会阻止大量上传。
VIEW
{!! 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',
));
控制器
public function showfileupload(Request $request){
$file = $request -> file('image');
dd($file); // This work well for me and return information about the image
}
复制过去!我希望它有效,让我知道任何错误和结果!
我想在我的应用程序中上传文件。 这是 blade 文件。
<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()。
我该如何解决这个问题
很可能,您正在尝试调用一个方法 - getClientOriginalName()
- 在一个不存在的对象上,所以它是空的。这与您看到的错误消息一致。
我不确定为什么,但我们可以开始倒退。让我们使用带有 hasFile()
方法的 if 语句来验证文件在尝试 move()
之前是否确实存在于请求中。
if ($request->hasFile('image')) {
$file->move($destinationPath,$file->getClientOriginalName());
}
如果执行以上操作,错误是否仍然存在?
这是Laravel 5.3 Docs on file uploads。它可能会给你更多的想法。
如果您发现用户正在发布文件并且 hasFile()
仍然返回布尔值 FALSE,那么您可能需要深入研究 php.ini 文件并查看 Post_max_size
或 upload_max_size values
以确保我们不会阻止大量上传。
VIEW
{!! 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',
));
控制器
public function showfileupload(Request $request){
$file = $request -> file('image');
dd($file); // This work well for me and return information about the image
}
复制过去!我希望它有效,让我知道任何错误和结果!