1
votes

Le fichier "" n'existe pas ou n'est pas lisible

Je rencontre un problème en essayant de télécharger plusieurs images sur le back-end de Laravel. J'ai un formulaire simple avec un champ de saisie et un attribut multiple qui devrait télécharger un tableau d'images dans la base de données mais quoi que j'essaye, j'obtiens la même erreur "Le" "fichier n'existe pas ou n'est pas lisible". J'ai vérifié les noms dans le champ de saisie et ils sont identiques au nom de la méthode file (). Toute aide est appréciée.

PS: Je suis un novice en Laravel et PHP ...

ProductController:

<form method="POST" enctype="multipart/form-data">
  @csrf

  <h5>Upload Multiple Images</h5>
  <input type="file" multiple name="images" id="images"> Upload Images
</form

Fichier Blade: p >

foreach($request->file('images')->store('images') as $images) {
            $product->images()->create([
                'images' => $images
            ]);
        }


3 commentaires

car il manque une action de formulaire. utilisez-vous le même itinéraire pour obtenir et publier? Autrement dit, d'où chargez-vous le fichier lame? Si, par exemple, vous chargez la vue à partir de la méthode create et que vous souhaitez ensuite télécharger le formulaire via la méthode store, vous devez inclure une action de formulaire pointant vers un itinéraire de stockage via la publication.


L'ajout de l'attribut d'action n'a pas aidé. Non, j'ai une route GET avec une méthode create et une route Post avec une méthode store.


Hé merci pour votre aide mais je l'ai fait fonctionner grâce à la publication de Vikas Katariya ci-dessous. J'utilise en fait une redirection sur ma méthode de magasin qui fait l'affaire. Je ne sais pas si c'est correct de le faire comme ça parce que je veux rediriger l'administrateur vers la page de détail du produit lorsque le produit est créé. Lorsque vous créez un produit, vous n'avez pas encore d'identifiant, je ne peux donc pas utiliser l'attribut d'action pour «admin / produit /. $ product-> id


4 Réponses :


0
votes

Essayez ..

$input = $request->all();
$datas = [];
if ($request->hasfile('images')) {
foreach ($request->file('images') as $key => $file) {
        $name = $file->getClientOriginalName();
         $file->move(public_path() . '/your path /', $name); //if you want to store image in yopur folder
         $datas[$key] = $name;
         $file = new YourMOdelNAme();
        foreach ($datas as $data) {
           $file->images = $data;
            $file->save();
                }
            }
        }


1 commentaires

merci de renoncer à cette réponse.Merci @ user12408466



0
votes

Importez les fichiers en utilisant le code ci-dessous

$files = $request->file('images');
if($request->hasFile('images'))
{
   foreach ($files as $file) 
     $product->images()->create([
       'images' => $file
     ]);
}


0 commentaires

0
votes

tableau d'images de nom

<form method="POST" enctype="multipart/form-data">
  @csrf

  <h5>Upload Multiple Images</h5>
  <input type="file" multiple name="images[]" id="images"> Upload Images
</form


0 commentaires

0
votes

Je sais que c'est une vieille question, mais j'ai eu le même problème il y a quelques jours. J'espère que cela aidera n'importe qui.

J'ai résolu le problème en définissant php_value upload_max_filesize dans php.ini sur la taille de mon fichier téléchargé.

C'est ici que j'ai trouvé la réponse au cas où vous seriez intéressé:

Si quelqu'un d'autre obtient cette erreur et qu'il ne s'agit pas d'un problème d'autorisation, vérifiez votre php.ini ... assurez-vous que votre upload_max_filesize est aussi grand que votre post_max_size. J'avais 1000M pour post_max_size (nous traitons de gros fichiers vidéo), mais seulement 100M pour upload_max_size (je blâme mes vieux yeux). Le téléchargement se produirait pendant une longue période, puis rejetterait l'erreur ci-dessus. https://github.com/laravel/framework/issues/31249


2 commentaires

Cela ne répond pas vraiment à la question. Si vous avez une autre question, vous pouvez la poser en cliquant sur Poser une question . Vous pouvez également ajouter une prime pour attirer davantage l'attention sur cette question une fois que vous en aurez assez reputation . - De l'avis


@KhalidKhan vous avez raison, c'était plus un commentaire qu'une réponse. Sry, je suis nouveau sur ce site