С моего телефона я делаю снимок с помощью ngcordova и конвертирую его в base64. Это прекрасно работает и может отображаться в приложении для телефона сразу после него.
Сейчас я пытаюсь отправить строку base64 на мой PHP-сервер с помощью $ http от angularjs, но по какой-то причине он не получает ее. Вот код
var request = $http({
method: "post",
url: mainUrl + "spus.php",
params: {
action: "saveLocationPicture",
locationPicture: spuInfo.locationPicture <-- "data:image/png;base64,/9j/44AQSk..."}
});
Я сказал, что сервер php не получает его, но я думаю, что это не так. Зачем? Потому что, если я отправлю более короткую строку (менее 835 символов), php-сервер получит ее, и я смогу сохранить ее в базе данных MySql. Для теста я создал 2 столбца в таблице MySql. Один имеет тип LongBlob, а другой — LongText. Там должно быть много места. 😉
Прежде всего, есть ли какие-либо ограничения на строку, которую можно отправить в $ http «params»?
Если так, то каков предел?
Может быть, это моя конфигурация сервера PHP, которая не может обрабатывать длинную строку base64? Как вы думаете?
Спасибо
******** ОБНОВИТЬ *******
Всем привет,
Пока я нашел частичное решение и хотел бы поделиться с вами.
Теперь я могу отправить свое большое изображение base64 на мой php-сервер, выполнив это:
var request = $http({
method: "post",
url: mainUrl + "spus.php",
data: {
action: "saveLocationPicture",
hw_id: spuInfo.hw_id,
locationPicture: spuInfo.locationPicture
}
});
И в моем php-коде:
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$action2 = $request->action;
$hw_id2 = $request->hw_id;
$locationPicture = $request->locationPicture;
Теперь единственная проблема, которую я вижу, это в представлении консоли отладки Chrome:
ПОЛУЧИТЬ данные: image / png; base64, / 9j / 4AAQSkZJRgABAgAAAQABAADFQWERTYUIOPHGJTIYKHMBFHTYF… kZJRgABAgAAAQABAAD // gAEKgD / 4gIcSUNDX1BST0ZJFFFFFF_F_FF_FF_HRFWFRFHBIHFHBIUFFF
Кто-нибудь знает, почему у меня это?
Спасибо
Почему бы тебе не попробовать Плагин передачи файлов Cordova чтобы загрузить файл изображения на сервер, извлеките файл с помощью $ _FILE, преобразуйте его в объект blob и сохраните.
Я нашел, почему я получил эту ошибку! Образ base64, который я использовал, был просто случайным символом, и это стало причиной проблемы.