С моего телефона я делаю снимок с ngcordova и конвертирую его в base64. Это прекрасно работает и может отображаться в моем приложении телефона сразу после него.Загрузите изображение base64 на php-сервер и сохраните на MySql
Теперь я пытаюсь отправить строку 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 зрения отладки консоли:
GET данные: изображение/PNG; base64,/9J/4AAQSkZJRgABAgAAAQABAADFQWERTYUIOPHGJTIYKHMBFHTYF ... kZJRgABAgAAAQABAAD // gAEKgD/4gIcSUNDX1BST0ZJTEUAAQEAAAIMbGNtcwIQFFFFFFFFFFF нетто :: ERR_INVALID_URL
Знает ли кто, почему я с этим?
Благодаря
Я предполагаю, что ваш запрос слишком большой (из php confie) .chek php settings –
У меня не было «post_max_size», включенного в файл php.ini. Я прочитал об этом, и по умолчанию 8M. Этого должно быть достаточно много для строки. В любом случае, я добавил поле и поставил «12M», потому что он должен быть выше, чем «upload_max_filesize», который уже установлен в 10M. К сожалению, это не сработало. :-( Любые другие предложения? – David
прежде всего проверьте databse.insert ваше изображение в таблице в коде base64 и попробуйте прочитать его по php –