Преобразование изображения Base64 в файл возвращает недопустимое изображение / данные

В течение последних двух дней я пытался преобразовать строку base64 в файл изображения, используя разные методы, но каждый раз, когда выходной файл не показывает изображение (он показывает размер и некоторые закодированные данные).

Заметки:
1. Браузер интерпретирует файл как документ, а не как mime изображения, но я уверен, что это не проблема, поскольку я пытался загрузить файл локально, и это тот же результат.
2. Я попытался сравнить результаты вывода онлайн-инструментов как codebeautify.org/base64-to-image-converter, так как кажется, что данные в файле изображения отличаются от моих данных.
3. Каталог и файлы имеют 775 разрешений, а apache имеет chown

Строка Base64 здесь: https://dpaste.de/gP7D/raw

Метод А:

list($type, $profile_image) = explode(';', $profile_image);
list(,$extension) = explode('/',$type);
list(,$profile_image)      = explode(',', $profile_image);
if($extension == 'jpeg'){$extension = "jpg";}
$filePath = '../uploads/profile_images/'.$uname.'.'.$extension; // using uname instead of unique id to not expose the uqniue key/session
$profile_image = base64_decode($profile_image);
file_put_contents($filePath, $profile_image);

Метод Б:

list($type, $profile_image) = explode(';', $profile_image);
list(,$extension) = explode('/',$type);
list(,$profile_image)      = explode(',', $profile_image);
$filePath = '../uploads/profile_images/'.$uname.'.'.$extension;
$ifp = fopen($filePath, 'wb');
fwrite($ifp, base64_decode($profile_image));
fclose($ifp);

Что я делаю не так?

Обновить:
Очевидно, что Apache / php.ini имел максимальное max_input_vars 5000, в то время как моя строка base64 была намного выше. Этот пост может быть помечен как решенный.

0

Решение

Кажется, вам нужно удалить начало строки, закодированной в base64, которая не является частью данных, закодированных в base64.
Удалить "data:image/jpeg;base64" из вашей строки base64.

Я сделал несколько простых тестов и получил изображение …

1

Другие решения

Максимальный max_input_vars в файле Apache / Php.ini составлял 5000, тогда как моя строка base64 была намного выше.

1

По вопросам рекламы [email protected]