130 votes

Comment instancier un objet File en JavaScript?

Il y a un objet File en JavaScript. Je veux en instancier un à des fins de test.

J'ai essayé new File() , mais l'erreur "Constructeur illégal" est générée.

Est-il possible de créer un objet File ?


Fichier de référence d'objet: https://developer.mozilla.org/en/DOM/File

187voto

user1938185 Points 172

Selon le W3C Fichier de spécification de l'API, le Fichier constructeur requiert 2 (ou 3) des paramètres.

Ainsi, pour créer un fichier vide faire:

var f = new File([""], "filename");
  • Le premier argument est que les données fournies dans un tableau de lignes de texte;
  • Le deuxième argument est le nom de fichier ;
  • Le troisième argument ressemble:

    var f = new File([""], "filename.txt", {type: "text/plain"; dernière modification: date})

Il fonctionne dans FireFox, mais je n'ai aucune idée à propos de la compatibilité du navigateur.

29voto

Endless Points 1188

Maintenant vous pouvez!

 var someBlob = new Blob(['same way...'], {type: 'text/plain'})
var parts = [someBlob, '...you construct blob', new ArrayBuffer()];

new File(parts, 'sample.txt', {
    lastModified: new Date(0), // optional - default = now
    type: "overide/mimetype" // optional - default = ''
})
 

si vous le téléchargez, vous obtiendrez

sample.txt même manière ...... vous construisez un blob

19voto

Nick Josevski Points 1997

Mise à jour

BlobBuilder a été rendu obsolète voir comment vous allez l'utiliser, si vous l'utilisez à des fins de test.

Sinon, appliquer le ci-dessous avec les stratégies de migration d'aller à Goutte, comme les réponses à cette question.

L'utilisation d'une Goutte à la place

Comme alternative il y a un Blob que vous pouvez utiliser à la place de Fichiers que c'est ce que l'interface de Fichier en découle que par le W3C spec:

interface File : Blob {
    readonly attribute DOMString name;
    readonly attribute Date lastModifiedDate;
};

Le Fichier de l'interface est basée sur la Goutte, héritant blob de la fonctionnalité et de l'élargir à l'appui de fichiers sur le système de l'utilisateur.

Créer le Blob

À l'aide de la BlobBuilder comme cela sur les résultats d'une méthode JavaScript qui prend un Fichier à télécharger via XMLHttpRequest et la fourniture d'une Goutte pour qu'il fonctionne très bien comme cela:

var BlobBuilder = window.MozBlobBuilder || window.WebKitBlobBuilder;
var bb = new BlobBuilder();

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://jsfiddle.net/img/logo.png', true);

xhr.responseType = 'arraybuffer';

bb.append(this.response); // Note: not xhr.responseText

//at this point you have the equivalent of: new File()
var blob = bb.getBlob('image/png');

/* more setup code */
xhr.send(blob);

Exemple

Le reste de l'échantillon est en place sur jsFiddle dans une plus complète de la mode, mais n'aura pas réussi à télécharger comme je ne peux pas exposer la logique de téléchargement dans un long terme de mode.

4voto

Alex Turpin Points 17272

Vous ne pouvez pas l'instancier.

Vous les obtenez généralement à partir d'un formulaire de téléchargement de fichier. Cet article l' explique bien.

-5voto

Ian1971 Points 1457

Parce que c'est javascript et dynamique, vous pouvez définir votre propre classe qui correspond à l'interface File et l'utiliser à la place.

C'est ce que j'ai dû faire avec dropzone.js car je voulais simuler un téléchargement de fichier et que cela fonctionne sur les objets File.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X