Я бы предложил перед отправкой данных собрать их в FormData, Туда можно и файлы и обычные данные запихнуть, и потом отправить эту FormData на сервер.
MDN FormData API
UPD:
Вспомнил, что применял похожее у себя давненько:
var fd = new FormData();
fd.append('file', file);
$http.post('/api/saveimage/', fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
Туда же напихать все остальное и отправить