hossainahmed's avatar

Laravel form Edit Multiple File (pdf,doc,png,jpg) and replace previous filename

I have a form that takes multiple files (pdf,doc,png,jpg) along with texts as input. I am storing the filenames in database. What I am trying to do is to let the users edit the submitted form along with documents. When user will submit new file the previous file will be replaced. The user can choose to upload only one file or no file in edit mode.

My Controller for storing the files are:

public function update(Request $request, $id)
{  $request->merge(array('mobile' => \App\Common::sanitizeMobileNo($request->get('mobile'))));
    $this->validate($request, [
        'trade_license_file' => 'mimes:pdf,doc,docx,xl,xls,jpeg,png|max:20000',
        'tin_cert_file' => 'mimes:pdf,doc,docx,xl,xls,jpeg,png|max:20000',
        'cert_inc_file' => 'mimes:pdf,doc,docx,xl,xls,jpeg,png|max:20000',
        'vat_cert_file' => 'mimes:pdf,doc,docx,xl,xls,jpeg,png|max:20000',
        'vehicle_list' => 'mimes:pdf,doc,docx,xl,xls,jpeg,png|max:20000',
        'applicant_signature' => 'mimes:pdf,doc,docx,xl,xls,jpeg,png|max:20000',
        'enlisment_fee_file' => 'mimes:pdf,doc,docx,xl,xls,jpeg,png|max:20000',
        'other_file' => 'mimes:pdf,doc,docx,xl,xls,jpeg,png|max:20000'
    ]);


    try{
        $form = form::find($id);
        
        // Handle Upload files
        $trade_license_file = $request->hasFile('trade_license_file');
        //die($trade_license_file);
        if(isset($trade_license_file)){
            $trade_license_file = self::attachment($request,'trade_license_file');
            $form->trade_license_file = $trade_license_file;
        }
        $tin_cert_file = $request->hasFile('tin_cert_file');
        if(isset($tin_cert_file)){
            $tin_cert_file = self::attachment($request,'tin_cert_file');
            $form->tin_cert_file = $tin_cert_file;
        }
        $cert_inc_file = $request->hasFile('cert_inc_file');
        if(isset($cert_inc_file)){
            $cert_inc_file = self::attachment($request,'cert_inc_file');
            $form->cert_inc_file = $cert_inc_file;
        }
        $vat_cert_file = $request->hasFile('vat_cert_file');
        if(isset($vat_cert_file)){
            $vat_cert_file = self::attachment($request,'vat_cert_file');
            $form->vat_cert_file = $vat_cert_file;
        }
        $applicant_signature = $request->hasFile('applicant_signature');
        if(isset($applicant_signature)){
            $applicant_signature = self::attachment($request,'applicant_signature');
            $form->applicant_signature = $applicant_signature;
        }
        $vehicle_list = $request->hasFile('vehicle_list');
        if(isset($vehicle_list)){
            $vehicle_list = self::attachment($request,'vehicle_list');
            $form->vehicle_list = $vehicle_list;
        }
        $enlisment_fee_file = $request->hasFile('enlisment_fee_file');
        if(isset($enlisment_fee_file)){
            $enlisment_fee_file = self::attachment($request,'enlisment_fee_file');
            $form->enlisment_fee_file = $enlisment_fee_file;
        }
        $other_file = $request->hasFile('other_file');
        if(isset($other_file)){
            $other_file = self::attachment($request,'other_file');
            $form->other_file = $other_file;
        }

        $form->save();

        return redirect('Form/'.$id)->with('message', 'success');
    }catch (Exception $ex){
        return redirect('Form/'.$id.'/edit')->with('message', 'error');
    }}

public function attachment($request,$name){
    if(!$name) return null;
    $originalName = $request->file($name)->getClientOriginalName();
    $fileName =  md5(rand(15000000,24675843)).Common::randomString(20).'.'.pathinfo($originalName, PATHINFO_EXTENSION);
    $request->file($name)->move(
        base_path() . '/public/uploads/form/', $fileName
    );
    return $fileName;
}

The problem I am facing is, when editing a form, if a user opts to upload one file or no file at all, all the previous files goes NULL. Any guidance for me?

StackOverflow: https://stackoverflow.com/questions/51703926/laravel-form-edit-multiple-file-pdf-doc-png-jpg-and-replace-previous-filename

0 likes
0 replies

Please or to participate in this conversation.