Navrhoval bych nahrát přímo do služby, jako je Amazon S3, a poté zpracovat soubor, jak uznáte za vhodné v rámci úlohy na pozadí.
Když uživatel nahraje soubor, můžete si být jisti, že bude bezpečně uložen v S3. Pro zákaz veřejného přístupu můžete použít soukromý bucket. Poté můžete v úloze na pozadí zpracovat nahrávání předáním S3 URI souboru a nechat svého pracovníka na pozadí stáhnout soubor.
Nevím, co váš pracovník na pozadí se souborem dělá, ale je samozřejmé, že jeho opětovné stažení nemusí být nutné. Koneckonců je to někde uloženo.
V minulosti jsem s úspěchem používal drahokam carrywave-direct. Vzhledem k tomu, že zmiňujete Heroku, mají podrobný návod pro nahrávání souborů přímo do S3.