尝试将base64 pdf文件存储在本地存储中

时间:2019-01-06 16:25:23

标签: laravel vue.js

我试图将保存的base64 pdf文件存储到laravel中的公共文件夹中。我写了这个控制器来存储文件。

我尝试使用此控制器解码我的pdf文件并将其存储在uploads文件夹中。该请求提供了base64 pdf文件。

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; 

}

但是此方法向我显示此错误。

Call to a member function move() on string

如何解决此问题?

3 个答案:

答案 0 :(得分:0)

$request->get('cv');将返回字符串而不是文件,这就是为什么move()无法工作的原因。

代替

$request->get('cv');

尝试使用

$request->file('cv');

答案 1 :(得分:0)

您应该使用file方法获取输入文件,

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; 
}

答案 2 :(得分:0)

正确的答案

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; 
 }