78058


ブラウザに表示されたボタンを選択してファイルを持たせるのではなく、JavaScriptを使用しファイルを持たせるやり方を探しています。  
よろしくお願いします。


CC BY-SA 4.0
2021-07-06T10:29:27.433
78006
2021-07-08T15:50:49.833
47016
question
javascript html vue.js
vueで<input type='file'>にファイルを持たせたい


抽象的な回答となります

まずJSを使ったローカルファイルの扱いはセキュリティのため自由度は低いです。特定のファイルパスを知っていたとしてもそのファイルをJSでinputタグに設定するということはできません

このためinputにファイルを設定してもらうには必ずユーザの操作が必要です

ページ遷移をしてもファイルを保持したいという要望を満たす場合は、ページ遷移後もユーザに設定しもらったinputのDOMを保持し続ける必要があります

SPAなどの場合は表示制御とhistory APIを使ってそういったことを行うことが可能です（自前でやるのはつらいですが）  
IonicやjQuery MobileなどはDOMを残しながらページ遷移の振る舞いを行うフレームワークです（アプリのナビゲーションUIを実現するため）

一般的なフォーム、たとえばお問い合わせページなどでファイルを添付し確認画面を出したいというケースの場合はダイアログを画面上に出すことが多いと思います。実際にページ遷移してdomを破棄するとファイル情報がなくなるためです

あとは投機的に添付ファイルが設定されたものはすぐにサーバにアップロードして、利用がなければ破棄するという実装も考えられます

要件次第だとは思いますが参考になれば幸いです


CC BY-SA 4.0
2021-07-08T15:50:49.833
78058
2021-07-08T15:50:49.833
298
78006
answer