JavaScriptで input type=”file” に値を設定するには?①

type=”file” は他の入力タイプと異なり、セキュリティが高いです。
なのでJavaScriptを使用し、valueプロパティでローカルのファイルパスをセットなどができないし、パスを取得することもできません。
できてしまったら、ローカルの重要ファイルを勝手にアップロードされてしまいます。

まったく、ファイルをセットできないのかというと、そんなことはありません。

新規ファイルオブジェクトを作成し、ファイルをセットすることが可能です。

新規ファイルテキストをinput type="file"にセット

<input type=”file” />

を用意し、以下のコードを実行します。

// ファイルエレメントを取得
const fileInput = document.querySelector('input[type="file"]');

// ファイルオブジェクトの作成
const myFile = new File(['Hello World!'], 'myFile.txt', {
    type: 'text/plain',
    lastModified: new Date(),
});
// データトランスファーを作成し、先程のファイルを追加
const dataTransfer = new DataTransfer();
dataTransfer.items.add(myFile);
// ファイルエレメントのfilesプロパティにデータトランスファーのfilesをセット
fileInput.files = dataTransfer.files;

次回は画像ファイルについて

おすすめ記事

TIPS一覧へ戻る

TIPSカテゴリー