Сохранить строку в кодировке base64 в указанной папке

Добрый день! Я просто хочу поместить захваченное изображение в указанную папку, а не в саму базу данных посредством вызова ajax. Вот что я сделал:

Файл JS:

$ ('# btn-save-snapshot'). on ('click', function () {

        Webcam.snap (функция (data_uri)
        {

            $.Ajax({
                url: '/capture',
                тип: 'POST',
                данные: 
                {
                    Captimage: data_uri
                },
                успех: функция (данные)
                {
                    предупреждение ('Saved!');
                },
                ошибка: функция (xhr)
                {
                    предупреждение (. $ parseJSON(xhr.responseText)['ошибка']['сообщение']);
                }
            });
        });
    });

Я не знаю, как сохранить его в указанной папке. Я уже использовал Input::file('captimage')->move($destination) на контроллере, но он не работает.

1 ответ

Решение

Вы получаете только строку, а не само изображение (обычно base64-формат). Итак, что вам нужно сделать, это отправить информацию в отдельный файл php, а затем использовать file_put_contents сохранить изображение. Перед сохранением необходимо удалить префикс.

Таким образом, вы могли бы сделать что-то подобное: (Если вы вернетесь base64-string):

file_put_contents('/capture/img.jpg', base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $_POST['captImage'])));

Если это не base64, пожалуйста, опубликуйте результат, так что содержание вашего captImage-переменный.

Другие вопросы по тегам