是laravel的新手并且发现很难设计用于将CSV文件上传到MySQL的代码......我已经完成了以下编码......
控制器:
public function index()
{
return view('items.items');
}
public function import(Request $request)
{
if($request->file('imported-file'))
{
$path = $request->file('imported-file')->getRealPath();
$data = Excel::load($path, function($reader) {})->get();
if(!empty($data) && $data->count())
{
$data = $data->toArray();
for($i=0;$i<count($data);$i++)
{
$dataImported[] = $data[$i];
}
}
Inventory::insert($dataImported);
}
return back();
}
在视图中:
<form action="{{route('items.import')}}" method="post" enctype="multipart/form-data">
<div class="col-md-6">
{{csrf_field()}}
<input type="file" name="imported-file"/>
</div>
<div class="col-md-6">
<button class="btn btn-primary" type="submit">Import</button>
</div>
</form>
在Routes.php中
路由:: get(&#39; items&#39;,&#39; ItemController @ index&#39;);
路由::帖子(&#39; items / import&#39;,[&#39;使用&#39; =&gt;&#39; ItemController @ import&#39;,&#39; as&#39; =&GT; &#39; items.import&#39;]);
这在RouteCollection.php中给出了一个名为NotFoundHttpException的错误
我所能理解的是,我的代码中缺少某些方法或控制器,但无法弄清楚那是什么......任何人都可以帮助我在这里我很长时间都被困在这里。
答案 0 :(得分:0)
首先尝试使用
Route::get('items/import',[ 'uses' => 'ItemController@import', 'as' => 'items.import'] );
如果访问了items / import,那么
Route::any('items/import',[ 'uses' => 'ItemController@import', 'as' => 'items.import'] );
除此之外,你可能想要使用:
<form action="/items/import" method="post"
并保留帖子
而不是
<form action="{{route('items.import')}}" method="post"
答案 1 :(得分:0)
您需要定义简单的路线
Route::any('items/import',ItemController@import);
并确保您必须在控制器中添加依赖项。它在那里?像:
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;
答案 2 :(得分:0)
您应该尝试使用以下形式:
<form action="{{ url('items/import') }}" method="POST" enctype="multipart/form-data">
您的导入功能如下:
use Redirect;
public function import(Request $request)
{
if($request->file('imported-file'))
{
$path = $request->file('imported-file')->getRealPath();
$data = Excel::load($path, function($reader) {
})->get();
if(!empty($data) && $data->count())
{
$data = $data->toArray();
for($i=0;$i<count($data);$i++)
{
$dataImported[] = $data[$i];
}
}
Inventory::insert($dataImported);
}
return redirect()->route('items.import');
}
更新回答
Route::get('items', 'ItemController@index')->name('items');
Route::post('items/import', 'ItemController@import')->name('items.import');
public function import(Request $request)
{
if($request->file('imported-file'))
{
$path = $request->file('imported-file')->getRealPath();
$data = Excel::load($path, function($reader) {
})->get();
if(!empty($data) && $data->count())
{
$data = $data->toArray();
for($i=0;$i<count($data);$i++)
{
$dataImported[] = $data[$i];
}
}
Inventory::insert($dataImported);
}
return redirect()->route('items.import');
}
答案 3 :(得分:0)
运行这些命令,然后刷新页面
1。php artisan route:clear
2。php artisan cache:clear
3。composer dumpautoload
,最后一个是
4。composer update