2
votes

essayez de stocker le fichier pdf base64 dans le stockage local

J'ai essayé de stocker mes fichiers pdf base64 enregistrés dans mon dossier public dans laravel. J'ai écrit ce contrôleur pour stocker le fichier.

J'ai essayé ce contrôleur pour décoder mes fichiers pdf et les stocker dans le dossier uploads. cette demande donne un fichier pdf base64.

Call to a member function move() on string

mais cette méthode me montre cette erreur.

if($request->get('cv')){

$file = $request->get('cv');                
$ext = $file->getClientOriginalExtension();
$newName = rand(100000,1001238912).".".$ext;
$base64 = base64_encode($file);
$file->move('uploads/file', $base64);
$users->cv = $base64; 

}

Comment puis-je résoudre ce problème problème?


2 commentaires

Quelles sont vos attentes voulez-vous encoder uniquement le nom du fichier ou souhaitez-vous encoder le contenu du fichier pdf


@ Manojkiran.A je veux décoder mon pdf encodé et le stocker dans mon dossier public, puis l'enregistrer avec un nouveau nom dans la base de données


3 Réponses :


0
votes

$ request-> get ('cv'); renverra une chaîne et non un fichier, c'est pourquoi move () ne fonctionnera pas.

Au lieu de

$request->get('cv');

Essayez d'utiliser

$request->file('cv');


3 commentaires

@KalanaMihiranga de quelle erreur vous avez besoin pour fournir plus d'informations afin que nous puissions vous aider


Ainsi dd ($ request-> file ('cv'); et postez dans votre question le résultat


variable non définie $ newName. c'est l'erreur qui me montre



0
votes

Vous devez utiliser la méthode du fichier pour obtenir votre fichier d'entrée,

if($request->file('cv')){

    $file = $request->file('cv');                
    $ext = $file->getClientOriginalExtension();
    $newName = rand(100000,1001238912).".".$ext;
    $base64 = base64_encode($file);
    $file->move('uploads/file', $base64);
    $users->cv = $base64; 
}


5 commentaires

J'ai également essayé cela, mais lorsque j'essaie de sauvegarder ce $ newName, il affiche une erreur de variable $ newName non définie


Pouvez-vous donner votre méthode de contrôleur complète où vous utilisez votre variable $ newName?


if ($ request-> hasFile ('cv')) {$ file = $ request-> get ('cv'); $ destinationPath = 'uploads / file'; $ ext = heure (). '.' . exploser ('/', exploser (':', substr ($ fichier, 0, strpos ($ fichier, ';'))) [1]) [1]; $ nouveauNom = rand (100000,1001238912). ".". $ ext; $ fichier-> déplacer ($ destinationPath, $ nouveauNom); } $ utilisateurs-> cv = $ nouveauNom


ce fichier get ne peut pas être utilisé car j'obtiens des valeurs avec la méthode vuejs onchange et ce fichier montre mon objet cv en type base64


ce résultat de demande de type de fichier cv comme celui-ci. ex: données: application / pdf; base64, JVBERi0xL ...........



3
votes

bonne réponse comme celle-ci

if($request->get('cv')){
   $file = $request->get('cv');
   $base = base64_decode($file);  
   $base64 = time().'.' . explode('/', explode(':', substr($file, 0, strpos($file, ';')))[1])[1];
   $destinationPath = public_path() . "/uploads/file/" . $base64;             
   file_put_contents($destinationPath, $base);
   $users->cv = $base; 
 }


0 commentaires