array_key_exists (): The first argument should be either a string or an integer

1

I get this error when I try to Save to the Store

 public function store(Request $request)
{
     $files = $request->file('links');
     $destinationPath = 'boletines';
     if($request->hasFile($files)){
        $cliente = $request->input('cliente');        
        $proyecto = $request->input('proyecto');
        $calendario = $request->input('Calendario');
        $fecha = $request->input('fecha');
        $anno = $request->input('anno');
        $titulo = $request->input('txtTitulo');
        $document = $request->file('link');    

        $file_name = time().$document->getClientOriginalName();

        $request->file('link')->storeAs('boletines', $file_name);

    foreach ($files as  $link) {
      //$filename = $link->getClientOriginalName();
      //$upload_success = $link->storeAs($destinationPath, $filename);

        $link = new File();
        $link->cliente = $cliente; 
        $link->proyecto = $proyecto;
        $link->fecha = $fecha;
        $link->anno = $anno;
        $link->calendario = $calendario;
        $link->titulo = $titulo;
        $link->name = $document->getClientOriginalName();
        $link->link = $file_name;

        $link->save();



  return Redirect::to('/Admin/file/create');

}    }     }

I try to save several files at the same time

This is the route I use

Route::post('/file', 'FileController@store');

and this is the view I have made.

<div id="content" class="container"  style="margin: 0px; display: inline-block; width: 60%;">
{{ csrf_field() }}
<br>
<form class="form-group" method="POST"  name="formNombre" action="/file" enctype="multipart/form-data">
     <div class="clientes">
        <div class="titulo">
          Subir Boletín
        </div>
        <input type="hidden" name="func" value="ActualizarCliente">
        <input type="hidden" id="cliente-id" name="cliente-id" value="62">

        <div class="datos">
          <table>
            <tbody>
              <tr>
                <td>Nombre del boletín</td>
                <td><input type="text" name="txtTitulo" ></td>
              </tr>
              <tr>
                <td>
                  Seleccione Mes
                </td>
                <td>
                  <select id="seleccione" required="required" onchange="marcar(this.value)">
                    <option value="">Selecione un mes</option>
                     <option value="0">Enero</option>
                      <option value="1">Febrero</option>
                        <option value="2">Marzo</option>
                         <option value="3">Abril</option>
                          <option value="4">Mayo</option>
                           <option value="5">Junio</option>
                            <option value="6">Julio</option>
                             <option value="7">Agosto</option>
                             <option value="8">Septiembre</option>
                            <option  value="9">Octubre</option>
                          <option  value="10">Noviembre</option>
                         <option value="11">Diciembre</option>   
                        </select>
                      <button type="button" id="ajaxRequest" title="Buscar" data-token="{{ csrf_token() }}">Buscar</button>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      Selecione la Quincena
                    </td>
                    <td>
                      <div class="container">
                           <div class="row">
                             <div class='col-sm-6'>
                                <input type='text' name="Calendario" class="datepicker" id='datetimepicker4' />
                            </div> 
                      </div>
                   </div>
                    </td>
                  </tr>
                 <tr>
                <td>
                   Seleccione Archivo
                </td>
              <td class="fallback">
                <input type="file" name="links[]" multiple required="required">
             </td>
           </tr>
             <tr>
               <td>
                   Seleccione el Año
               </td>
                 <td>
                  <select id="seleccione" required="required" onchange="marcaranno(this.value)">
                    <option value="">Seleccione el Año</option>
                    <option value="2018">2018</option>
                     <option value="2019">2019</option>
                      <option value="2020">2020</option>
                       <option value="2021">2021</option>
                        <option value="2022">2022</option>
                         <option value="2023">2023</option>
                          <option value="2024">2024</option>
                           <option value="2025">2025</option>
                            <option value="2026">2026</option>
                             <option value="2027">2027</option>
                              <option value="2028">2028</option>
                               <option value="2029">2029</option>
                                <option value="2030">2030</option>
                                  <option value="2031">2031</option>
                                   <option value="2032">2032</option>   
                                    <option value="2033">2033</option>
                                    <option value="2034">2034</option>
                                   <option value="2035">2035</option>
                                  <option value="2036">2036</option>
                                 <option value="2037">2037</option>
                                <option value="2038">2038</option>
                              <option value="2039">2039</option>
                             <option value="2040">2040</option>
                            <option value="2041">2041</option>
                               </select>
                              </td>
                            </tr>
                         </tbody>
                       </table>
                     <br>
                   <br>
                </div>
             <div class="datos-botones">
              <button type="button" title="Cancelar Edición" onclick="CancelarContent()">Cancelar</button>
               <input type="reset" title="Limpiar Edición" value="Limpiar">
                <input type="submit" title="Subir  Boletín" value="Subir Boletín">
                <input type="button" title="Buscar Boletín" value="Buscar Boletín" class="serch" data-token="{{ csrf_token() }}"  id="searchCliente">
                 


                 <script type="text/javascript">
                   $('.serch').click(function(){
                     var month = $('#textofecha').val();
                  if(month == ""){
                    swal("Erorr","Primero selecione un mes","error");
                  }
                  else
                  {
                   month = $(this).data("month");
                   $('.tablaarchivo'+month).toggle();
                  }
            });
          </script>


     </div>
  </div>

<div class="tablaarchivo{{$arch->fecha}}" id="idarchivoescondido"  style="display: none" >
 <div class="scroll" style="height:40%;overflow: auto;">
  <table class="table table-bordered table-striped" id="dtDynamicVerticalScroll">   
    <thead>
        <th>ID</th>
         <th>Nombre</th>
         <th>Año</th>
         <th>Acion</th>
         <th><button type="button" name="cerrar" id="idcerrar" class="cerrar">X</button></th>
    </thead>
  <tbody id="dtDynamicVerticalScroll">
    @foreach($archivos as $arch)
        <tr id="file{{$arch->id}}" style="display: none;">
             <td>{{$arch->id}}</td>
              <td>{{$arch->name}}</td>
               <td>{{$arch->anno}}</td>
            <td>
              <button form="form-elimina" class="btonEliminar" value="{{$arch->id}}" type="submit" id="{{$arch->id}}" title="Eliminar Boletín" >Eliminar</button>  
              <button type="button" title="Ver Boletín" class="BtnVer" data-id="{{$arch->id}}" id="{{$arch->id}}">Descargar</button>
            </td>
        </tr>
     @endforeach 
   </tbody>
 </table>
</div> 
</div>
      @csrf
      <div class="form-group">
          <input type="text"     name="fecha" hidden="hidden"   id="textofecha" >   
          <input type="text" name="anno" hidden="hidden" id="textoann" placeholder="anno"> 
           <textarea type="text"  rows="2"    hidden="hidden" id="textosid"      name="cliente" ></textarea>
            <textarea type="text" rows="2"  hidden="hidden" id="textproyecto"  name="proyecto"></textarea>
      </div>      
</form>

This is the model I use

class File extends Model
{
    protected $table = 'files'; // Nombre de la tabla que se va a llamar 
    protected $primaryKey = 'id'; // Clave primaria para identificar el usuario.
    protected $fillable = [ 'name','link','cliente','proyecto','fecha','id','anno','calendario','titulo'];/// los datos.
}
    
asked by Ricardo Rojas 26.11.2018 в 19:29
source

2 answers

0

Your method worked for me to give form to the solution, and well I want to share it, your form works, but I do not know why I did not deposit several files to the database.

public function store(Request $request)
{
 $files = $request->file('links');
 $destinationPath = 'boletines';
 foreach ($files as $key[0+1]) {
    $cliente = $request->input('cliente');        
    $proyecto = $request->input('proyecto');
    $calendario = $request->input('Calendario');
    $fecha = $request->input('fecha');
    $anno = $request->input('anno');
    $titulo = $request->input('txtTitulo');
    $document = $request->file('link');    
   $link = new File();

  foreach ($key as  $lnk ) {

    $file_name = time().$lnk->getClientOriginalName();
    $lnk->storeAs('boletines', $file_name);
    $link->cliente = $cliente; 
    $link->proyecto = $proyecto;
    $link->fecha = $fecha;

    $link->anno = $anno;
    $link->calendario = $calendario;
    $link->titulo = $titulo;
    $link->name = $lnk->getClientOriginalName();
    $link->link = $file_name;

    $link->save();

}


 }
 return Redirect::to('/Admin/file/create');

    }
    
answered by 26.11.2018 / 21:12
source
0

you must obtain the name of each file separately and save 1 for 1
you're trying to get the name and make a store of a file arrangement you must go through the arrangement and get each of the names separately! neither can you name $link on your instance and $link on your alias on foreach! you are also passing a $files = $request->file('links'); $request->hasFile( $files) you pass a requests to a request!

public function store(Request $request)
{
     $files = $request->file('links');
     $destinationPath = 'boletines';
     if($request->hasFile('links')[0]){
        $cliente = $request->input('cliente');        
        $proyecto = $request->input('proyecto');
        $calendario = $request->input('Calendario');
        $fecha = $request->input('fecha');
        $anno = $request->input('anno');
        $titulo = $request->input('txtTitulo');
        $document = $request->file('link');    
    $link = new File();
    foreach ($files as  $lnk ) {
      //$filename = $$lnk->getClientOriginalName();
      //$upload_success = $link->storeAs($destinationPath, $filename);

        $file_name = time().$lnk->getClientOriginalName();
        $lnk->storeAs('boletines', $file_name);
        $link->cliente = $cliente; 
        $link->proyecto = $proyecto;
        $link->fecha = $fecha;
        $link->anno = $anno;
        $link->calendario = $calendario;
        $link->titulo = $titulo;
        $link->name = $lnk->getClientOriginalName();
        $link->link = $file_name;
        $link->save();



  return Redirect::to('/Admin/file/create');
    
answered by 26.11.2018 в 19:37