Если главное сперва сделать быстро, то делайте как получится, base64 и прочие "костыли", позволяющие обойтись даже без POST-запроса, намного упрощают процесс и повышают кроссплатформенность. :)
Если хотите научиться делать хорошо и готовы подождать и деньги вам платят, то разбирайтесь с HTTP POST-запросами и можете еще применить multipart form data, загрузку бинарных данных вам придется осуществлять буферно, то есть по N байт, благодаря этому реализовать прогресс будет несложно.
библиотеки или классы
Вот такой запрос:
https://www.google.ru/search?q=android+upload+imag...
Но чужой код обычно не очень хорош для вас, а иногда вообще долго не работает сразу и создает много проблем в будущем, поэтому это только если с вас сразу требуют и быстро и очень функционально и при том мало опыта писать самому, тогда просто следует пробовать все подряд.