$ request-> file('logoImg')始终为null

时间:2019-02-07 15:37:37

标签: php laravel laravel-blade

基本上我有一个包含文件输入类型的表单,并且在提交表单时,除文件输入之外,所有输入都返回其内容。

在同一论坛的大多数回复中,我发现我需要添加属性,已启用php中的文件上传功能,超过512 mb的max_file_size等等,等等,没有任何结果。

当我检查$ request-> input('logoImg')时,检索我在表单中选择的文件的名称,但是如果我更改为$ request-> file('logoImg'),则期望任何可上传的文件文件对象,但返回NULL。

我对此感到非常疯狂,我相信问题出在Laravel配置环境中,请重复,

这是我的代码。

这是xxxx.blade.php文件中的表单代码

<form method="POST" action="{{ route ('socioActualizar', $socio->Id) }}" enctype=”multipart/form-data”>



      <div class="row" style="padding:15px;">


         <!-- Main content for option-->
          <div class="card shadow mb-4" style="width:100%">
            <div class="card-header py-3">
              <h6 class="m-0 font-weight-bold text-primary">Socio: {!! $socio->Nombre_Apellidos !!}</h6>
              <button type="button"style="background:skyblue; float:right; padding:5px; margin-top:5px;" onclick="location.href = '{{ route('cuotas',$socio->Id) }}'">Ver cuotas</button>
            </div>

          </div>

    <!-- /.container-fluid -->
            <div class="card shadow mb-4" style="width:50%; padding:15px; float:left;">
            <div class="card-header py-3">
              <h7 class="m-0 font-weight-bold text-primary">Datos Personales</h7>
            </div>
            {{ csrf_field() }}
            <label for="Numero_Socio">Número de socio</label>
            <input type="number" name="Numero_Socio" id="Numero_Socio" value="{{ $socio->Numero_Socio }}" disabled style="text-align:right; width:25%; padding:5px;">

            <label for="Nombre_Apellidos">Nombre y Apellidos</label>
            <input type="text" name="Nombre_Apellidos" id="Nombre_Apellidos" value="{{ $socio->Nombre_Apellidos }}" style="text-align:left; width:100%; padding:5px;">

            <label for="DNI">Dni / Nif</label>
            <input type="text" pattern="[0-9A-Za-z]{9}" placeholder="Formato 12345678X" name="DNI" id="DNI" value="{{ $socio->DNI }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Direccion">Dirección</label>
            <textarea name="Direccion" id="Direccion" rows="5" cols="1" style="text-align:left; width:100%; padding:5px;">{{ $socio->Direccion }}</textarea>

            <label for="Poblacion">Población / Municipio</label>
            <input type="text" name="Poblacion" id="Poblacion" value="{{ $socio->Poblacion }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Calle">Provincia</label>
            <input type="text" name="Calle" id="Calle" value="{{ $socio->Calle }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Cp_Provincia" style="width:100%;">Código postal</label>
            <input type="number" name="CP_Provincia" id="CP_Provincia" value="{{ $socio->CP_Provincia }}" style="text-align:left; width:25%; padding:5px;">

            <label for="Correo_Electronico" style="width:100%;">Correo Electrónico</label>
            <input type="email" name="Correo_Electronico" id="Correo_Electronico" value="{{ $socio->Correo_Electronico }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Telefono" style="width:100%;">Teléfono</label>
            <input type="text" name="Telefono" id="Telefono" value="{{ $socio->Telefono }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Fecha_Alta" style="width:100%;">Fecha de alta</label>
            <input type="date" name="Fecha_Alta" id="Fecha_Alta" value="{{ $socio->Fecha_Alta }}" disabled style="text-align:left; width:30%; padding:5px;">

            <label for="Fecha_Baja" style="width:100%;">Fecha de baja</label>
            <input type="date" name="Fecha_Baja" id="Fecha_Baja" value="{{ $socio->Fecha_Baja }}" style="text-align:left; width:30%; padding:5px;">




    </div>

    <div class="card shadow mb-4" style="width:50%; padding:15px; float:left;">
            <div class="card-header py-3">
              <h7 class="m-0 font-weight-bold text-primary">Datos Profesionales</h7>
            </div>
            <label for="Quien_lo_Presenta">Quién lo presenta</label>
            <input type="text" name="Quien_Lo_Presenta" id="Quien_Lo_Presenta" value="{{ $socio->Quien_Lo_Presenta }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Cargo">Cargo</label>
            <input type="text" name="Cargo" id="Cargo" value="{{ $socio->Cargo }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Ejercito">Ejército</label>
            <input type="text" name="Ejercito" id="Ejercito" value="{{ $socio->Ejercito }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Cuerpo_Servido">Cuerpo Servido</label>
            <input type="text" name="Cuerpo_Servido" id="Cuerpo_Servido" value="{{ $socio->Cuerpo_Servido }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Tercio_Brigada">Tercio Brigada</label>
            <input type="text" name="Tercio_Brigada" id="Tercio_Brigada" value="{{ $socio->Tercio_Brigada }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Bandera">Bandera</label>
            <input type="text" name="Bandera" id="Bandera" value="{{ $socio->Bandera }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Compañia">Compañía</label>
            <input type="text" name="Compañia" id="Compañia" value="{{ $socio->Compañia }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Localidad">Localidad</label>
            <input type="text" name="Localidad" id="Localidad" value="{{ $socio->Localidad }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Provincia">Provincia</label>
            <input type="text" name="Provincia" id="Provincia" value="{{ $socio->Provincia }}" style="text-align:left; width:100%; padding:5px;">

            <label for="Fecha_Ingreso" style="width:100%;">Fecha de ingreso</label>
            <input type="date" name="Fecha_Ingreso" id="Fecha_Ingreso" value="{{ $socio->Fecha_Ingreso }}" style="text-align:left; width:30%; padding:5px;">

            <label for="Fecha_Licencia" style="width:100%;">Fecha de Licencia</label>
            <input type="date" name="Fecha_Licencia" id="Fecha_Licencia" value="{{ $socio->Fecha_Licencia }}" style="text-align:left; width:30%; padding:5px;">


    </div>
       <div class="card shadow mb-4" style="width:30%; padding:15px; float:left;">
           @if ($socio->Imagen == '')
                <img id="avatar" src="../img/soldier.png" style="width:125px; height:125px;">
           @else
                <img id="avatar" src="{{ $socio->Imagen }}" style="width:125px; height:125px;">
           @endif

           <input type="file" name="logoImg" id="Img" style="padding:5px; margin-top:5px;" onchange="showMyImage(this)" >

        </div>

      <div class="card shadow mb-4" style="width:70%; padding:15px; float:left;">

            <label for="Observaciones">Observaciones</label>
            <textarea name="Observaciones" id="Observaciones" rows="8" cols="1" style="text-align:left; width:100%; padding:5px;">{{ $socio->Observaciones }}</textarea>

        </div>



     <!-- Main content for option-->
          <div class="card shadow mb-4" style="width:100%; height:55px;">

           <input type="submit" Value="Guardar Cambios" id="guardar_cambios" style="background:skyblue; position:absolute; right:10px; padding:5px; margin-top:5px;">

          </div>



  </div>
  </form>

这是我的路线web.php文件

Route::get('/socios', 'SociosController@sociosView')->name('socios');
Route::get('/socio/{id}','SociosController@sociosSelect')->name('socio');
Route::post('/socioActualizar/{id}','SociosController@socioActualizar')-> name('socioActualizar');
Route::get('/cuotas/{id}','CuotasController@verCuotasSocio')->name('cuotas');

最后,在控制器中编写代码

 public function socioActualizar(Request $request, $id)
{
    $socio = Socio::where('Id',$id)->first();
    $socio->Nombre_Apellidos = $request->input('Nombre_Apellidos');
    $socio->DNI = $request->input('DNI');
    $socio->Direccion = $request->input('Direccion');
    $socio->Calle = $request->input('Calle');
    $socio->Poblacion = $request->input('Poblacion');

    $socio->CP_Provincia = $request->input('CP_Provincia');
    $socio->Telefono = $request->input('Telefono');
    $socio->Correo_Electronico = $request->input('Correo_Electronico');

  //  $socio->Fecha_Alta = $request->input('Fecha_Alta');
    $socio->Fecha_Baja = $request->input('Fecha_Baja');

    $socio->Quien_Lo_Presenta = $request->input('Quien_Lo_Presenta');
    $socio->Cargo = $request->input('Cargo');
    $socio->Ejercito = $request->input('Ejercito');
    $socio->Cuerpo_Servido = $request->input('Cuerpo_Servido');
    $socio->Tercio_Brigada = $request->input('Tercio_Brigada');
    $socio->Bandera = $request->input('Bandera');
    $socio->Compañia = $request->input('Compañia');
    $socio->Localidad = $request->input('Localidad');
    $socio->Provincia = $request->input('Provincia');
    $socio->Fecha_Ingreso = $request->input('Fecha_Ingreso');
    $socio->Fecha_Licencia = $request->input('Fecha_Licencia');
    $socio->Observaciones = $request->input('Observaciones');
    //logica de la subida de imagen en laravel

    //obtenemos el campo file definido en el formulario
    $name = $request->input('logoImg'); // returns name of file selected
    $name = $request->file('logoImg'); // returns null Why??
    $request->logoImg->store('uploads');
    if($request->hasFile('logoImg')){
        $logoImage = $request->file('logoImg');
        $name = $logoImage->getClientOriginalName();
        //indicamos que queremos guardar un nuevo archivo en el disco local
        Storage::disk('local')->put($name,  File::get($logoImage));
    }

    //obtenemos el nombre del archivo
    $socio->Imagen = $name;
    $socio->save();

    return Redirect::to('socios/');
}

在这个看似简单的步骤中我已经迷失了,但没有用,肯定是有点小错误,但是我找不到它。

非常感谢。

2 个答案:

答案 0 :(得分:0)

对于您的问题,我没有具体的答案,但是我解决问题的方法是走出框架一秒钟,然后使用纯PHP进行调试。

在这种情况下,我将查看您的$_FILES超全局变量,并确定您的文件是否正确上传。

如果您什么都没收到,那么我会看看您的<form>和Chrome中的检查器,以确保文件发送正确。我不知道这是否是您的复制粘贴内容,但是您的enctype上的引号似乎令人怀疑。

答案 1 :(得分:0)

我在这里复制用于上传图片的代码。
要创建缩略图并保存图像,我使用了 Intervention Image (干预图像)一个PHP图像处理和操作库。

这里说明了如何安装它:
http://image.intervention.io/getting_started/installation

Room