2013-12-11 2 views
0

В настоящее время я разрабатываю веб-сайт с AngularJS для интерфейса и спокойный веб-сервис с использованием Laravel framework (PHP5) в качестве бэкэнд; В настоящее время я сталкиваюсь с одной проблемой, загрузкой файлов. Я хотел бы иметь очень простой файл, загруженный, с вводом файла и только некоторой копией в одну из каталогов сервера.Управление файлами, загруженными как строка base64

На данный момент я использую директиву в AngularJS, которая отлично работает, и отправьте мой файл с использованием base64 url; Я могу получить эту строку внутри моего PHP-сервера, но не могу преобразовать его в файл. Например, я хотел бы иметь возможность получить имя файла, ext, ... и скопировать его на сервер.

Любая идея, как преобразовать base64 в «файл-объект»? (Является ли решение для Laravel и простой PHP не беспокоит меня).

ответ

0

Это довольно просто decode основание 64 Строка на вашем сервере и запись в file.

Пример, если изображение находится в данной форме изображения и данные были отправлены в POST:

file_put_contents('path/to/images/image.jpg', base_64_decode($_POST['image'])); 

Я не фирма с Laravel, но я думаю, что есть лучшие способы внутри Framework, чем доступ к форме данных РНР $ _POST Массив напрямую.

Чтобы найти из типа файла изображения взглянуть на finfo_buffer и посмотреть, как использовать для вашего случая here

+0

На самом деле моя строка начинается как то 'данные: изображение/JPEG; base64,/9J/4AAQSkZJRgABAQAAAQABAAD/4SPrRXhpZgAATU0AKgAAAAgACgEPAAIAAAAGAAAAhg' (происходит из API HTML5 Fileread), поэтому я думаю, что мне нужно сделать дополнительную работу, чтобы заставить его работать. Я попытался удалить часть «data: image/jpeg; base64», но ничего не сделает, Я могу сохранить файл, но я не могу его открыть ('Ошибка интерпретации файла изображения JPEG (Не файл JPEG: начинается с 0x2f 0x39)') –

+0

Это определенно работает. Вам нужно удалить данные: image/jpeg; base64, из строки Я также сделал это в предыдущих проектах и ​​записал в файл – Bernhard

Смежные вопросы