2016-09-29 97 views
0

使用base64解码图像后,我在pathinfo处收到错误Array to string conversion。尝试将我的文件放入diretory时发生错误。我需要保持图像的名称。PHP:如何在使用base64解码后正确使用pathinfo

顺便说一句我的图像文件来自JS DOM

var formG = new FormData(); 
for(var i=0; i<imageTrust.length;i++){ 
    formG.append('file_multiImage[]', imageTrust[i]); 
} 


if(isset($_POST['file_multiImage'])){ 
    $multi_image = $_POST['file_multiImage']; 
    foreach ($multi_image as $key => $value) { 
     $staticName = $event_id.'conNo'.$finalContestantNum; 
     $data = str_replace('data:image/jpeg;base64,', '', $value); 
     $data = str_replace(' ', '+', $data); 
     $data = base64_decode($data); 
     $file = pathinfo($staticName . PATHINFO_EXTENSION); //Error occurs here 
     file_put_contents($theDir.'/'. $file, $data); 

    } 
} 

阵列结果

Array(
     [0] => data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQA 
     [1] => data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAlgCWAAD 
     [2] => data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/7QC 
) 
//I did not just continue strings are too long 
+1

首先你最好[阅读手册的文件上传](http://php.net/manual/en/features.file-upload.php),因为你已经犯了很多基本的错误处理$ _FILES数组或者而不是处理$ _FILES数组 – RiggsFolly

+0

@RiggsFolly我认为我的问题是不完整的我的图像来自dom(data:image)然后我解码它base64 –

+0

你的'pathinfo()'有一个句号,而不是逗号分隔函数参数。 – Scuzzy

回答

1

有语法问题解析器就不会检测。

$file = pathinfo($staticName . PATHINFO_EXTENSION);

变化

$file = pathinfo($staticName , PATHINFO_EXTENSION);

然而,你的$file下次使用似乎无效,开创了file_put_contents()呼叫格式不正确的文件名。通过指定PATHINFO_EXTENSION,您正在从 中挑选只有扩展名的文件名,该文件名似乎不存在。