2015-01-14 2 views
-1

С моего телефона я делаю снимок с 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

Знает ли кто, почему я с этим?

Благодаря

+0

Я предполагаю, что ваш запрос слишком большой (из php confie) .chek php settings –

+0

У меня не было «post_max_size», включенного в файл php.ini. Я прочитал об этом, и по умолчанию 8M. Этого должно быть достаточно много для строки. В любом случае, я добавил поле и поставил «12M», потому что он должен быть выше, чем «upload_max_filesize», который уже установлен в 10M. К сожалению, это не сработало. :-( Любые другие предложения? – David

+0

прежде всего проверьте databse.insert ваше изображение в таблице в коде base64 и попробуйте прочитать его по php –

ответ

0

Почему вы не попробовать Cordova File Transfer Plugin, чтобы загрузить файл изображения на сервер, получить файл, используя $ _FILE, тайному его в большой двоичный объект и сохранить его.

+0

Да, только что обнаружил, что в эти выходные. благодаря – David

0

Я нашел, почему я получил эту ошибку! Образ base64, который я использовал, был просто случайным, и это вызывает проблему.

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