YuraLons's avatar

How to add the name of the uploaded file in the controller ?

In the migration, I created a field with the name of the document, in the model I also registered it in the filled fields. How can I enter my names for them in the form when uploading files? Controller @ store

 if ($request->hasFile('passport'))
        {
            foreach($request->file('passport') as $passport){
                $str_passport = $passport->store('passport', 'public');
                $homes->passportDocuments()->create(['document' => $str_passport]);
            }
        }

Model Passport

protected $fillable = [
        'document',
        'document_name',
    ];

    public function house()
    {
        return $this->belongsTo(Houses::class);
    }

My view (created)

<div class="passport_list">
  <button class="add_passport" type="button">Add passport</button><br><br>
     <div>
        <label for="passport">Passport</label>
          <input class="w-full" type="file" name="passport[]">
     </div>
</div>
0 likes
1 reply
YuraLons's avatar

I found this article in the documentation https://laravel.com/docs/8.x/filesystem#specifying-a-file-name. As I understand it, I need to add to the line

$str_passport = $passport->storeAs('passport', 'document_name', 'public');

And in the form itself, specify an additional field

<div class="passport_list">
  <button class="add_passport" type="button">Add passport</button><br><br>
     <div>
        <label for="passport">Passport</label>
          <input class="w-1/2" type="file" name="passport[]">
          <input class="w-1/2" type="text" name="document_name" placheholder="Name download file">
     </div>
</div>

Right? Or am I wrong somewhere

Please or to participate in this conversation.