<input type="file">
私は定期的にファイルをアップロードするWebサイトを持っており、フォームが送信されたときにデータをバックエンドにPOSTします。
フォームを段階的に拡張して、ブラウザの外部からビューポートの任意の場所(一部のブラウザに組み込まれているファイル入力フィールドだけでなく)にファイルをドロップしてアップロードできるようにしたいと思います。
フォームが自動送信するかどうかは重要ではありません。したがって、ドラッグアンドドロップでファイルフィールドのファイルのみが選択され、アップロードが開始されない場合は、問題ありません。複数のファイルをサポートする必要はありません。アップロードの進行状況やサムネイルなど、特別なものを表示する必要はありません。
ドラッグアンドドロップアップロードをサポートするJSライブラリがあることは知っていますが、それらはすべてAJAX経由でアップロードしているようです。それは可能ですが、アップロードエラーを処理したり、成功時に正しいメッセージをリダイレクトして表示したりするために、バックエンドとフロントエンドを変更する必要があります。
バックエンドの変更を必要としないプログレッシブエンハンスメントが必要です。これは、ページのフォームを使用して同期的に発生する必要があります。アップロードが「フォアグラウンド」で行われる限り、JSは問題ありません。もちろん、同期AJAXは機能しません。