У меня есть следующий код:
<?php header('Content-Type: image/png'); $data = "iVBORw0KGgoAAAANSUhEUgAAAuAAAAI8CAYAAACwIh5dAAAgAElkZJgRCXxOAuIPzzTlg......"; define('UPLOAD_DIR', '/home/Desktop/image.png'); $img = $data; $img = str_replace('data:image/png;base64,', '', $img); $img = str_replace(' ', '+', $img); $data = base64_decode($img); $file = UPLOAD_DIR . uniqid() . '.png'; $success = file_put_contents($file, $data); print $success ? $file : 'Unable to save the file.'; ?>
Здесь $data
содержит закодированную строку изображения в базе-64. Я хочу сохранить изображение в файл. Я сделал предыдущий код, также просматриваю много учебников в Google, но он не работает.
Может ли кто-нибудь помочь мне, где я ошибаюсь.
Заранее спасибо.
define('UPLOAD_DIR', '/home/xpointers/Desktop/');
Запомнить! Ваш веб-сервер apache будет работать со своими собственными правами пользователя (например, www-data). Позаботьтесь о том, чтобы ваш пользователь apache или группа apache запускали доступ к вашему желаемому каталогу. Чтобы проверить, вы можете chmod 777 в этот каталог и посмотреть, что произойдет.
Написание внутри каталога пользователя не всегда является хорошей идеей. Если возможно, используйте нейтральный каталог, к которому могут обращаться нужные пользователи.
Я считаю, что эта строка:
define('UPLOAD_DIR', '/home/Desktop/image.png');
Должно быть:
define('UPLOAD_DIR', '/home/Desktop/');
Сначала укажите правильный путь:
define('UPLOAD_DIR', '/home/Desktop/');
После проверки, что предоставленный вами путь имеет право на чтение / запись или нет.