Extracted all file upload logic into separate service