ホームページ > ウェブフロントエンド > jsチュートリアル > FormData を使用するときに FileList とファイルのプロパティを正しく設定するにはどうすればよいですか?

FormData を使用するときに FileList とファイルのプロパティを正しく設定するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-08 06:19:10
オリジナル
360 人が閲覧しました

How to Correctly Set FileList and File Properties When Using FormData?

ファイルが FormData オブジェクトにも反映される FileList オブジェクトで File オブジェクトと length プロパティを設定する方法は?

プロンプトに記載されているように、 の .files プロパティ要素を別の から FileList に追加します。要素の .files プロパティまたは DataTransfer.files プロパティ。

ただし、FileList オブジェクトの .length プロパティは、.files プロパティで設定した後でも 0 のままです。さらに、

を渡すと、 を含むこのアプローチを使用して変更された .files を使用すると、.size が 0 の File オブジェクトが生成されます。

この問題に対処するには、まず FileList が変更可能であることを確認する必要があります。これは、DataTransfer コンストラクターを利用し、DataTransferItemList を通じてアクセスできる変更可能な FileList を作成することで実現できます。

FileList が変更可能になると、DataTransferItemList.add() メソッドを使用してファイルを個別に設定できます。これにより、FileList.length プロパティが正しいファイル数に設定されるようになります。

この手順に従うと、フォームから作成された FormData オブジェクトにもファイルが反映されます。

これが例です:

const dT = new DataTransfer();
dT.items.add(new File(['foo'], 'programmatically_created.txt'));
document.querySelector('input[type="file"]').files = dT.files;
ログイン後にコピー

このアプローチでは、 の FileList は次のようになります。要素には、DataTransfer オブジェクトで作成されたファイルが設定されます。 FileList.length プロパティは 1 に設定され、ファイルはフォームから構築された FormData オブジェクトに反映されます。

以上がFormData を使用するときに FileList とファイルのプロパティを正しく設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート