【问题标题】:form update with file upload laravel使用文件上传 laravel 更新表单
【发布时间】:2019-04-01 08:18:07
【问题描述】:

在更新表单和输入文件时,我遇到了一些问题。这是我正在使用的。

我在 laravel 5.1 中有一个表单,它有一个 post 方法和一个隐藏的“Patch”方法。这可以按原样更新表单中的字段。但是,当它引入时:

<input type="file" id="profile_picture" name="image_url" />

进入表格,我得到一个:

MethodNotAllowedHttpException in RouteCollection.php line 218:

laravel 错误。我试过改变

 <input type='hidden' name='_method' value='PATCH'>

PUT,它仍然不喜欢它。

我的表单如下所示:

<form action='{{url("profiles/$user->id")}}' method="post" class="form-horizontal" enctype="multipart/form-data">

路由资源如下所示:

Route::resource('profiles', 'ProfilesController');

我无法弄清楚我在这里缺少什么......非常感谢任何帮助。

【问题讨论】:

  • 您是否对发布和补丁请求使用相同的表单?
  • 此表格仅用于更新

标签: php laravel laravel-5.1


【解决方案1】:

我认为这与您在“action”参数中输入的确切路线与配置文件控制器的更新方法相匹配。

尝试改变

action'{{url("profiles/$user->id")}}'

到

action='{{ route("profiles.update", $user->id) }}'

此外,您可以使用Laravel Collective HTML package 来简单地打开和关闭表单。

【讨论】:

  • 我认为这与我的 php.ini 设置和最大上传文件大小有关。如果我做一个超过 3mb 的文件,它会在路由级别对我大喊大叫,如果我做一个小文件,它会推动它通过。
  • 如果是这样,你是对的。不过要小心,如果您使用“php artisan serve”命令,您应该注意它使用 php cli 的 php.ini。它与apache服务器的php.ini不同。
【解决方案2】:

同样对于 POST 请求类型,您需要将 CSRF 令牌与您的表单数据一起发送。如果您在视图中使用 laravel 刀片模板,则可以使用

{{ csrf_field() }}

翻译成

<input type="hidden" name="_token" value={{ csrf_token() }}

请参考documentation。

【讨论】:

    猜你喜欢
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 2018-05-14
    • 1970-01-01
    • 2019-04-27
    相关资源
    最近更新 更多