2013-03-14 3 views
2

Je dois sérialiser un objet File à partir d'une entrée de fichier, afin que l'objet puisse être sauvegardé, analysé dans un objet fichier, puis lu en utilisant l'objet FileReader.Javascript peut sérialiser un objet File

Est-ce que quelqu'un sait si cela est possible dans Google Chrome?

Je pense que le problème réside dans la protection de la propriété file.path. Les navigateurs Webkit masquent cette propriété, donc je suppose que lorsque vous la sérialisez, le chemin est supprimé.

Ensuite, bien sûr, le FileReader est incapable de le lire sans informations de chemin.

Voici un exemple:

var files = uploadControl.files[0]; 
var dataFile = JSON.stringify(files); 
var newFile = JSON.parse(dataFile); 
var reader = new FileReader(); 
reader.onload = (function(event) { 
    var fileContents = event.target.result; 
}); 
reader.readAsText(newFile); 

Rien ne se passe. Le lecteur n'est pas chargé. Si je transmets l'objet JSON, cela ne fonctionne pas non plus.

+0

Pourquoi? Qu'est-ce que vous essayez d'accomplir? – SLaks

+0

Vous devez normalement encoder un fichier avec quelque chose comme base64 en premier; La sérialisation avec JSON met simplement quelque chose dans une structure de données facilement analysable, mais ne gère pas nécessairement des choses comme le contenu de fichiers binaires. –

+0

Essayer d'enregistrer sur le stockage local afin que je puisse lire plus tard le fichier au chargement de la page. Je ne veux pas enregistrer en base64, binaire ou texte d'ailleurs comme si le fichier change, je ne serai pas capable de charger les changements. Je serai coincé avec ce que j'avais lu à l'origine dans le FileReader au moment de soumettre le formulaire. –

Répondre

2

En principe, ce que vous demandez ne sera pas possible. S'il était possible d'avoir du texte qui représentait l'objet fichier, alors vous pourriez construire ce texte à partir de zéro, le désérialiser et ainsi avoir accès aux fichiers auxquels l'utilisateur n'a pas accordé l'autorisation.

(La seule exception est que le texte représentatif est une sorte de chaîne binaire robuste-secrète (cryptographiquement signée, ou une clé clairsemée dans une table de recherche) que seul le navigateur aurait pu distribuer en premier lieu - mais je Attendez-vous à ce que cette caractéristique soit documentée et que vous l'auriez déjà trouvée?)

+0

Je suppose que c'est un peu ce que j'espérais, mais j'essayais un dernier espoir en posant la question. Merci de confirmer. Il semble que le navigateur pourrait crypter le chemin du fichier et décrypter lorsque vous essayez de le lire. –

Questions connexes