Il y a un File
objet en JavaScript. Je souhaite en instancier un à des fins de test.
J'ai essayé new File()
, mais j'obtiens une erreur "Constructeur illégal".
Est-il possible de créer un File
objet?
Référence de l'objet fichier: https://developer.mozilla.org/en/DOM/File
javascript
file-upload
upload
Julesbou
la source
la source
Illegal constructor
sur Chrome 37 / Ubuntu donc non ça ne fonctionne pasfile = new Blob([blobdata], {type: filetype, lastModified: filelastModified}); file.name = filename
Maintenant vous pouvez!
la source
new File([], '')
Illegal constructor
sur Chrome 37 / UbuntuUtilisez plutôt un objet blob
Comme alternative, il existe un Blob que vous pouvez utiliser à la place de File car c'est ce dont l'interface File dérive selon les spécifications du W3C :
Créer le blob
Utiliser le BlobBuilder comme celui-ci sur une méthode JavaScript existante qui prend un fichier à télécharger via
XMLHttpRequest
et lui fournir un Blob fonctionne bien comme ceci:Exemple étendu
Le reste de l'exemple est disponible sur jsFiddle de manière plus complète mais ne sera pas téléchargé avec succès car je ne peux pas exposer la logique de téléchargement à long terme.
la source
DataTransferItemList.add
File
ne nécessite pasBlob
. Donc à la question d'origine: comment instancier un fichier ?Maintenant, c'est possible et pris en charge par tous les principaux navigateurs: https://developer.mozilla.org/en-US/docs/Web/API/File/File
la source
L'idée ... Pour créer un objet File (api) en javaScript pour les images déjà présentes dans le DOM:
Ne fais pas ça! ... (mais je l'ai fait quand même)
-> la console donne un résultat similaire à un fichier objet:
Mais la taille de l'objet est fausse ...
Pourquoi ai-je besoin de faire ça?
Par exemple pour retransmettre un formulaire image déjà téléchargé, lors d'une mise à jour de produit, avec des images supplémentaires ajoutées lors de la mise à jour
la source
Parce que c'est javascript et dynamique, vous pouvez définir votre propre classe qui correspond à l'interface File et l'utiliser à la place.
Je devais le faire avec dropzone.js car je voulais simuler un téléchargement de fichier et cela fonctionne sur les objets File.
la source