Per tua informazione, esiste già un supporto nativo per inserire caricamenti nello storage S3, devi solo abilitarlo:

Quindi l’attuale interfaccia utente di Post supporta già questo.
Forse puoi sfruttarlo se hai bisogno di ulteriori modifiche e questo dovrebbe semplificare significativamente il tuo progetto.
Vedi: Configure an S3 compatible object storage provider for uploads