【问题标题】:Laravel - Error: 403 while trying to upload pictureLaravel - 错误:尝试上传图片时出现403
【发布时间】:2020-10-01 23:52:17
【问题描述】:

在我的 Laravel-5.8 中,我要上传图片

Http\Controllers\HomeController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\Hr\HrEmployee;
use App\Http\Requests\Hr\Employee\UploadPictureRequest;

class HomeController extends Controller
{

public function update_picture(UploadPictureRequest $request, $id)
{
    DB::beginTransaction();         
    try{ 
    $employee = HrEmployee::find($id);
             if ($request->emp_image != "") {
                 $emp_image = $request->file('emp_image');
                 $new_name = rand() . '.' . $emp_image->getClientOriginalExtension();
                 $emp_image->move(public_path('storage/employees/image'), $new_name);
                 $employee->emp_image = $new_name;
            }        
    $employee->save();


    DB::commit();

            Session::flash('success', 'Picture Successfully Uploaded');
            return redirect()->route('dashboard');

    } 
    catch (Exception $exception) 
    {

    DB::rollback();
        Session::flash('error', 'Action failed!');
        return redirect()->back();   
    }                                                     
 }

}

查看

                <span data-toggle="tooltip"  data-original-title="Click To Upload Picture">
                    <a class="btn btn-info btn-block text-white" data-toggle="modal" data-target="#upload-picture{{ $employee->id }}" data-original-title="Picture"> 
                        <b>Upload My Picture</b>
                    </a>    
                </span>

                                   <div class="modal fade" id="upload-picture{{ $employee->id }}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                                        <div class="modal-dialog">
                                            <div class="modal-content">
                                                <form action="{{route('update_picture',['id'=>$employee->id])}}" method="post" id="update-picture-form">
                                                    {{ csrf_field() }}
                                                    <div class="modal-header">
                                                        Self-Review Comment
                                                    </div>
                                                    <div class="col-md-12">
            <div class="text-center">

                            @if($employee->emp_image != '')
                                <input type="image"  src="{{ URL::to('/') }}/public/storage/employees/image/{{ $employee->emp_image }}" class="profile-user-img img-fluid img-circle" id="wizardPicturePreview" title="" width="150" height="165" disabled/>
                                <!--<input  type="file" name="emp_image" id="wizard-picture" class="" hidden>-->
                        <div class="row">
                          <div class="col-12 col-sm-4">
                            <div class="form-group">
                            </div>  
                           </div>   
                          <div class="col-12 col-sm-4">
                            <div class="form-group">
                                <input type="file"  name="emp_image" id="wizard-picture" class="form-control">
                            </div>  
                           </div> 
                          <div class="col-12 col-sm-4">
                            <div class="form-group">
                            </div>  
                           </div>                  
                        </div> 
                            @else
                                <input type="image" src="{{asset('theme/adminlte3/dist/img/default.png')}}" class="profile-user-img img-fluid img-circle" id="wizardPicturePreview" title="" width="150" height="150" disabled/>
                                <!--<input  type="file" name="emp_image" id="wizard-picture" class="" hidden>-->
                        <div class="row">
                          <div class="col-12 col-sm-4">
                            <div class="form-group">
                            </div>  
                           </div>   
                          <div class="col-12 col-sm-4">
                            <div class="form-group">
                                <input type="file"  name="emp_image" id="wizard-picture" class="form-control">
                            </div>  
                           </div> 
                          <div class="col-12 col-sm-4">
                            <div class="form-group">
                            </div>  
                           </div>                  
                        </div>                                    
                            @endif
            </div> 
                                                    </div>

                                                    <div class="modal-footer">
                                                        <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                                                        <button  type="submit" id="upload_pic_btn-submit" class="btn btn-success btn-ok">Save</button>
                                                    </div>
                                                </form>
                                            </div>
                                        </div>
                                    </div>     

查看\仪表盘

表单是一个名为dashboard的视图中的模态表单

路线/网络

Route::get('/dashboard', 'HomeController@index')->name('dashboard');

    Route::post('update_picture/{id}', [
        'uses' => 'HomeController@update_picture',
        'as' => 'update_picture'
    ]);

当我提交表单时,我收到了这个错误:

错误:尝试上传图片时出现 403

然后当我做 php artisan route:list 时,我得到了:

|发布 |更新图片/{id} |更新图片 | App\Http\Controllers\HomeController@update_picture |网络,身份验证 |

我该如何解决?

谢谢。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    或者你可以试试这个

     Route::put('update_picture/{id}''HomeController@update_picture')->name('update_picture');
    

    【讨论】:

    • 当我这样做时,我得到了错误:405。不允许的方法
    • 你在使用 ajax 吗?
    • 您缺少 &lt;form action="{{route('update_picture',['id'=&gt;$employee-&gt;id])}}" method="post" id="update-picture-form" enctype="multipart/form-data"&gt; 形式的 enctype="multipart/form-data"
    【解决方案2】:

    请在表单标签中添加此 enctype="multipart/form-data"

    <form action="{{route('update_picture',['id'=>$employee->id])}}" method="post" id="update-picture-form" enctype="multipart/form-data">
    

    并替换此行$new_name = rand() . '.' . $emp_image-&gt;getClientOriginalExtension();
    用这条线$new_name = rand() . '.' . $request-&gt;emp_image-&gt;getClientOriginalExtension();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 2017-02-11
      • 2012-03-09
      • 2017-04-25
      相关资源
      最近更新 更多