首页 > 解决方案 > 即使存在路由,所有带有 multipart/form-data 的表单发布都会返回 404

问题描述

我的 Laravel 5.7 应用程序中有一个表单,允许用户上传 CSV 文件以导入数据。它已经工作了几个星期。但是,它突然开始为表单multipart/form-data作为其enctype. 奇怪的是,当我将其更改为URLEncoded* 时,没有 404。

我已经尝试了几件事。

  1. 更改路线名称。
  2. 检查php artisan route:list输出以验证路由是否存在。
  3. 通过 GET 方法访问路由,我得到方法不允许异常。
  4. 清除缓存。

刀片形式

<form action="/import/createParts/upload/" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="csv_upload_file">Select the File</label>
        <input type="file" name="csv_upload_file">
    </div>

    @csrf
    <button type="submit">Upload</button>
</form>

路线

Route::prefix('import')->group(function () {
    Route::get('/createParts', 'Import\CreatePartsController@index');
    Route::post('/createParts/upload', 'Import\CreatePartsController@upload');
});

理想情况下,这应该将表单传递给函数,然后发生另一个过程。

标签: phphtmllaraveluploadlaravel-5.7

解决方案


命名路线概念是处理路线的更简单方法。

web.php

Route::post('import/createParts/upload', 'Import\CreatePartsController@upload')
    ->name('createparts.upload');

blade

 <form method="post" action="{{ route('createparts.upload') }}" 
    enctype="multipart/form-data">
   @csrf

   <div class="form-group">
     <label for="csv_upload_file">Select the File</label>
     <input type="file" name="csv_upload_file">
   </div>

   <input type="submit" value="Upload"/>
</form>

推荐阅读