2
votes

je veux télécharger une image dans un dossier public et une base de données dans laravel mais je suis confronté à un problème

Je souhaite télécharger l'image dans un dossier public et une base de données dans laravel mais je suis confronté à un problème, L'image est téléchargée dans le dossier public mais l'image n'est pas enregistrée dans la base de données. Quelqu'un peut-il m'aider à dire où ça va mal? Voici mon code.

controller

Route::get('DashBoard','AdminController@DashBoard');


Route::get('Clients','AdminController@clients');
Route::post('/ajax_upload/action','AdminController@clientaction')->name('ajaxupload.action');

Route↑

public function clientaction(Request $request)
   {


        $validation = validator::make($request->all(),[
          'select_file' =>'required|image|mimes:jpeg,png,jpg,gif|max:2048'
        ]);
        if($validation->passes())
        {
         $image = $request->file('select_file');
         $new_name = rand() . '.' . $image->getClientOriginalExtension();
         $image->move(public_path('images'), $new_name);
         return response()->json([
          'message'   => 'Image Upload Successfully',
          'class_name'  => 'alert-success'
         ]);


        }
        else
         {
          return response()->json([
          'message'   => $validation->errors()->all(),
         'class_name'  => 'alert-danger'
      ]);
     }

     DB::table('logo-clients')->insert([

      'select_file'=> $new_name
  ]);
   }


2 commentaires

Zubair, pouvez-vous s'il vous plaît l'erreur ou les journaux (projet / stockage / logs / laravel **. Log) pour cette fonction? Merci.


actuellement, je n'ai pas d'erreur (projet / stockage / logs / laravel **. log) dans ce dossier, seule l'image ne se télécharge pas dans la base de données merci


3 Réponses :


2
votes

parce que vous renvoyez déjà une valeur, cela signifie que l'action après cela est inutile

il vous suffit donc de déplacer ceci

$image->move(public_path('images'), $new_name);
//move it into here

sous cette partie

DB::table('logo-clients')->insert([

  'select_file'=> $new_name
]);


0 commentaires

1
votes

parce que vous retournez déjà lorsque la validation est réussie. s'il vous plaît regarder votre code que vous avez retourné deux fois sur validation réussie et échoué je vous suggère de déplacer votre code lors de son enregistrement dans la base de données avant de renvoyer le response () -> json () lorsque la validation est passée


1 commentaires

déplacez DB :: table ('logo-clients') -> insert () ce bloc de code au-dessus de la return response () -> json () à l'intérieur du $ validation-> passé () if instruction



1
votes

Votre fonction revient après avoir déplacé le fichier dans un dossier. donc le code d'insertion de base de données n'est pas exécuté. votre fonction devrait être comme

public function clientaction(Request $request) {

    $validation = validator::make($request->all(),[
      'select_file' =>'required|image|mimes:jpeg,png,jpg,gif|max:2048'
    ]);
    if($validation->passes())
    {
     $image = $request->file('select_file');
     $new_name = rand() . '.' . $image->getClientOriginalExtension();
     $image->move(public_path('images'), $new_name);
    }
    else
     {
      return response()->json([
         'message'   => $validation->errors()->all(),
         'class_name'  => 'alert-danger'
      ]);
    }

 DB::table('logo-clients')->insert([

  'select_file'=> $new_name ]); 

return response()->json([
      'message'   => 'Image Upload Successfully',
      'class_name'  => 'alert-success'
     ]);
 }


0 commentaires