• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Datei lokal speichern und bei Änderung wieder auf Server uploaden

vupibi

New member
Hallo,

Ich habe eine Webseite mit Zugriff auf eine Dateistruktur.
Die Dateistruktur existiert aber nicht wirklich sondern liegt in einer CouchDB Datenbank, wobei die eigentliche Datei als Anhang eines CouchDB Dokumentes daher kommt.
Ich Suche jetzt nach einer Lösung für folgendes Szenario:
Der Benutzer klickt auf die Datei (z.B. ein Excel Dokument) öffnet sie Lokal und kann dieses dann bearbeiten. Sobald Die Datei bearbeitet wurde soll diese wieder automatisch auf den Server geladen werden und die alte Version der Datei in der Datenbank ersetzen.

Normal über Javascript ja so nicht möglich, da ich keinen Zugriff auf die Dateistruktur des Client Rechners bekomme, daher meine Idee und die Frage an euch, könnte das denn so klappen we ich mir das gedacht habe?

Ich benutze die Chrome filesystem api.
- Klickt der Benutzer auf eine Datei wird diese über die filesystem api in sein lokales filessystem geladen
- Dadurch ist die Datei erreichbar und kann soll über einen link verfügbar gemacht werden, sodass der Benutzer diese öffnen kann (sollte so klappen, oder: filesystem:http://www.example.com/persistent/info.txt ?)
- Dann wird gepollt, dachte da an alle 10 Sekunden ob sich an der Datei was geändert hat, wenn ja soll die Datei in der Datenbank durch die neuere ersetze werden.

Soviel zu Theorie, hat das jemand mal in irgend einer Art und Weise versucht?
 
Also erster Test:

Eine einfache Text Datei wird auf dem Rechner des Klienten erstellt und soll nun von ihm geöffnet werden können.
Soweit so gut, das erstellen der Datei klappt auch prima, und Zugriff auf jene bekomme ich mit:

filesystem:http://127.0.0.1/temporary/info.txt

Aber ich will die Datei ja nicht im Browser öffnen, sondern mit dem jeweils verknüpften Programm (also unter Mac z.B. TextEdit). Hab gerade keine Idee wie man das anstellen soll. Geht das überhaupt? Jemand eine Idee?

Fragen über Fragen, und das am Sonntag!

Code:
<html>

	<head>

		<script type="text/javascript">

			window.webkitRequestFileSystem(window.TEMPORARY, 1024*1024 * 10, function(fileSystem) {
				// Temporärer Speicher freigegeben
				/*
					
					Um Dateien mit Inhalt zu füllen, gibt es die Methode „createWriter()“. Sie schreibt den Inhalt eines sogenannten Blobs in die Datei. Ein Blob („Binary Large Object“) ist ein binäres Objekt, welches beliebige Inhalte wie Text und Bilder beinhalten kann.

				*/
				function saveFile(fileSystem) {
				  	fileSystem.root.getFile("info.txt", {
				  		create: true
				  	}, function(file) {
				    	file.createWriter(function(content) {
				      		var blob = new Blob(["Lorem Ipsum"], {type: "text/plain"});
				      		content.write(blob);
				      		// Datei erstellt
				      		console.log("Datei erstellt.")
				    	});
				  	});
				}

				saveFile(fileSystem);

			}, function() {
				// Nicht erfolgreich
				console.log("Fehler, Freigabe des Speicherkontingents nicht erfolgreich!")
			});
		
		</script>

	</head>

	<body>



	</body>

</html>
 
Das wird so nicht funktionieren. Denn die Datei wird zwar auf der lokalen Festplatte gespeichert, aber an einem schwer zu findenden Ort und mit einem völlig anderen/aussagelosen Dateinamen.

Du musst also ein bisschen mehr Interaktion vom Nutzer verlangen. Also zuerst musst du die Daten als Download anbieten (ist nicht weiter schwer mit einer Data-URL und dem download-Attribut), dann muss der Nutzer die Datei lokal speichern. Anschließend kann er daran arbeiten und wenn er fertig ist, muss er die Datei wieder hochladen.
 
oder man benutzt ein kleines java applet. das erfordert aber beim nutzer eine java inst. die keinen guten ruf hat trotz ganz erheblicher änderungen in sachen sicherheit.
 
java ist nicht mehr unsicher. ausführungen im browser gehen nur noch mit benutzer zutun und ggf. zertifikat. aus entwicklersicht ist das mittlerweile extremst aufwändig.
 
Jede Software von solcher Komplexität ist unsicher und hat Sicherheitslücken. Aber wenn man in seinem Browser weniger Plugins integriert hat, reduziert man trotzdem die Angriffsoberfläche.
 
Ja, in dieser Grundsätzlichkeit ist das natürlich völlig richtig. Wollte nur sagen, dass Java heutzutage kein Vergleich mehr zu der Situation ist, wo es sich seinen schlechten Ruf (zu Recht) eingefangen hat.
 
Zurück
Oben