Maison >interface Web >js tutoriel >Comment puis-je modifier les objets fichier et la longueur de la liste de fichiers dans un objet FormData ?

Comment puis-je modifier les objets fichier et la longueur de la liste de fichiers dans un objet FormData ?

DDD
DDDoriginal
2024-12-01 01:50:09355parcourir

How Can I Modify File Objects and FileList Length within a FormData Object?

Modification des objets fichier et de la longueur de la liste de fichiers dans un objet FormData

Question :

Comment pouvons-nous modifier les objets fichier dans une FileList et définissez sa longueur, en vous assurant que les fichiers sont reflétés dans le FormData objet ?

Réponse :

Utilisation de DataTransfer

Comme l'a découvert l'affiche originale (OP), l'API DataTransfer propose une méthode pour accomplir cette tâche, malgré ses limitations actuelles (prise en charge uniquement par Blink, FF >= 62). En créant une FileList mutable via DataTransferItemList, nous pouvons définir des fichiers arbitraires sur la FileList d'un élément d'entrée de fichier HTML.


< ;pre>// Créer un nouvel objet DataTransfer
const dT = new DataTransfer();

// Ajouter un objet File à DataTransferItemList
dT.items.add(new File(['foo'], 'programmatically_created.txt'));

// Définissez la propriété files de l'élément d'entrée sur Fichiers de l'objet DataTransfer
inp.files = dT.files;

<input type="file">

Cette approche modifie efficacement la FileList dans l'élément d'entrée du fichier, et les fichiers mis à jour seront reflétés dans le FormData. objet.

Limitations :

Il est important de noter que cette technique a actuellement une prise en charge limitée par les navigateurs. De plus, certains comportements de secours peuvent être requis pour les navigateurs qui ne prennent pas en charge le constructeur DataTransfer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn