2016-09-29 39 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,您正在從 中挑選只有擴展名的文件名,該文件名似乎不存在。