2011-01-16 16 views
1

Ich habe verschiedene Methoden ausprobiert, um eine Datei auf dem Client zu öffnen und anzuzeigen, ohne die Datei an einen Server zu senden.Wie öffne, ändere und speichere ich eine Datei mit Javascript und ActiveX?

Eröffnung: Ich habe versucht, die Datei mit Javascript von einem <input type=file> zugreifen, aber die Sicherheitsbeschränkung scheint dies nicht zu erlauben. Ich versuchte auch mit dem gleichen Problem. Zuletzt versuchte ich mit new ActiveXObject('Scripting.FileSystemObject');, aber ich bekomme immer einen Fehler, dass automationserver das Objekt nicht erstellen konnte.

Zum Speichern habe ich versucht, execCommand('SaveAs',true) von TextRange und DocumentFragment zu verwenden. Von DocumentFragment kann ich eine Datei speichern, aber es enthält nur <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">. Von TextRange wird kein Speicherdialog angezeigt.

Was könnte ich tun?

+0

Diese sind alle Sicherheitseinschränkungen. Es wäre hilfreich, wenn Sie erklären könnten, was Sie tun möchten, was sich grundlegend von dem unterscheidet, was ein Angreifer tun würde, um das System des Benutzers zu hacken. – EricLaw

+0

Für mich sind FileDialogs kein Problem, ich möchte dem Benutzer eine Datei auswählen. Ich muss mich nicht verstecken. Ich sehe keine Sicherheitsverbesserungen, die eine clientseitige Bearbeitung nicht zulassen. Am Ende gibt es keinen Unterschied in der resultierenden Datei, als ob sie serverseitig bearbeitet würde. – schwer

Antwort

0

von einer Website, Sie irgendetwas davon nicht tun können, wenn Sie ein signed script

Von lokalem Dateisystem verwenden, kann IE das Objekt Dateisystem verwenden, um von einem HTA

+0

Signieren möglich. HTA ist nicht das Richtige für mich. Ich denke, ich muss UniversalXPConnect verwenden. Aber es scheint schwierig zu sein, den Code zu signieren. – schwer

+0

Internet Explorer unterstützt weder "signiertes Skript" noch "UniversalXPConnect". – EricLaw

+0

Ich brauche keine Cross-Browser-Unterstützung. – schwer

0

Sorry,

Sie können nicht auf das lokale Dateisystem über einen Browser zugreifen, ohne dass der Benutzer eine Plug-in/ActiveX-Objekt installieren.

Möglicherweise versuchen Sie eine andere plattformübergreifende Übermittlungsmethode wie Adobe Air.

+0

Adobe wäre meine letzte Wahl. – schwer