2016-08-18 3 views
1

Я пытаюсь загрузить некоторые изображения, закодированные в строке Base64, разделенные через char '&', например. основа64image & основа64обзор base64image. Но мой кодЗагрузите несколько изображений

$id = $_POST["id"]; 
$Image64 = $_POST["Image64"]; 
$Beschreibung = $_POST["Beschreibung"]; 
$Image = $_POST["Image"]; 
$counter = 0; 


$serverPath = $_SERVER['DOCUMENT_ROOT']; 
$path = "$id"; 

$query = "UPDATE `hausaufgaben` SET `Loesung_Image` = '$Image' WHERE `id`= '$id';"; 
    if(mysqli_query($connect,$query)){ 
     $counter += 1; 
     $splittedStr = explode('&',$Image64); 
     foreach($splittedStr as $value){ 
      echo "$value"; 
      file_put_contents("Image.jpg",base64_decode($value)); //line 32 
      rename("Image.jpg", "$serverPath/Hausaufgabenplaner/Bilder/Loesungen/$path=$counter.jpg"); 
     } 
     echo "Successfully Uploaded Images"; 
} 

дает мне эту ошибку

Предупреждение: base64_decode() ожидает параметр 1, чтобы быть строкой, массив приведен в /uploadImage.php на линия

+0

Проверьте, что такое значение '$ value'? – Script47

+0

@ Script47 Не является ли значение частью массива splittedStr? – Ribisl

+0

['explode'] (http://php.net/manual/en/function.explode.php) возвращает массив. Таким образом, каждое '$ value' будет массивом. 'base64_decode'" ожидает, что параметр 1 будет строкой ". – showdev

ответ

1

Просто замените этот

$splittedStr[] = explode('&',$Image64); 

с

$splittedStr = explode('&',$Image64); 

В вашем коде, вы, вероятно,

$splittedStr[0] => array(image1,image2, ...)

И, вы должны использовать транзакции базы данных, чтобы избежать недействительным данных, если file_get_contents терпит неудачу.

+0

Я не получаю код ошибки, но создаваемые файлы имеют 0 байт (и создается только 1 файл) – Ribisl

+0

Не могли бы вы видеть, какая информация у вас внутри переменной '$ value'? Покажите нам первые 20 символов, чтобы мы могли проверить, соответствует ли он в правильном формате. –

+0

E/VOLLEY:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB, так что это правильный формат, который я думаю. – Ribisl