#php #arrays #pathinfo
#php #массивы #pathinfo
Вопрос:
Я получаю сообщение об ошибке Array to string conversion
в pathinfo после использования base64 decode image. При попытке поместить мои файлы в директорию возникает ошибка. Мне нужно сохранить имя изображения.
Кстати, мои файлы изображений были получены из 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. Сначала вам лучше прочитать руководство по загрузке файлов , поскольку вы допустили немало основных ошибок, обрабатывая массив $ _FILES или, скорее, НЕ обрабатывая массив $ _FILES
2. @RiggsFolly Я думаю, что мой вопрос неполный, мои изображения получены из dom (data: image), затем я декодирую его в base64
3. у вас
pathinfo()
есть точка вместо запятой, разделяющей аргументы функции.4. В этом случае вы можете добавить вывод из a
print_r($_POST);
к вашему вопросу
Ответ №1:
Существует проблема с синтаксисом, которую анализатор не обнаружил бы.
$file = pathinfo( $staticName . PATHINFO_EXTENSION);
изменить на
$file = pathinfo( $staticName , PATHINFO_EXTENSION);
однако ваше следующее использование $file
кажется недопустимым, создавая искаженное имя файла для file_put_contents()
вызова. Указав PATHINFO_EXTENSION
, что вы выбираете только расширение из имени файла, которое, похоже, не существует.