Ich versuche eine Web-App zu erstellen, die auf ExtJS basiert, und ich arbeite am Datei-Upload-Bereich der App.
Ich möchte, dass Benutzer Dateien hochladen können, indem sie sie kopieren und einfügen - nicht nur den Inhalt der Datei kopieren und einfügen, sondern auch die Datei selbst. In Windows können Sie zum Beispiel "Kopieren" oder "Ausschneiden" im Menü "Bearbeiten" wählen, während eine Datei ausgewählt ist. Wählen Sie dann "Einfügen" und kopieren oder verschieben Sie die Datei. Ich möchte, dass Benutzer Dateien hochladen können zu meiner App im Einfügen-Schritt, indem Sie einfach in ihrem Browser Einfügen wählen.
Ich habe bereits die Drag-and-Drop-API von HTML5 ausprobiert, aber wir möchten diese nicht verwenden. Wir möchten, dass Benutzer Dateien kopieren / ausschneiden und einfügen können, um ihre Dateien hochzuladen (solange sie es sind) kleiner als 20 Megabyte). Wenn der Benutzer den Pfad zu seiner Datei kopiert und diesen direkt in die Seite einfügt und uns mitteilt, wo die Datei zu finden ist, könnte das auch funktionieren.
Kann jemand einen Weg vorschlagen, dies zu tun?
Das Problem ist, dass Sie nicht mit Javascript auf das Dateisystem des Clients zugreifen können. Es gibt diese neue Dateisystem-API , aber Sie können damit nur ein virtuelles Sandbox-Dateisystem erstellen. Ich hatte das gleiche Problem, habe eine Weile darüber nachgedacht und kam auf die folgenden Ideen.
Flash
Schreiben einer Flash-Bridge, die auf das Dateisystem zugreift und die Javascript-Kommunikation mit ihr über swliveconnect
Problem: Flash hat auch keinen Dateisystemzugriff.
Java-Applet
Dasselbe wie Flash und wieder mit LiveConnect
Meiner Meinung nach könnte das funktionieren, aber ich habe es nicht ausprobiert, weil mein Ziel war, Dateisystemzugriff auf ein Chromebook zu bekommen. Und chromeOS unterstützt Java nicht (zumindest ohne etwas Hacking)
ActiveX
Ich habe auch einige Lösungen gefunden. Ich habe im Applet-Teil aufgegeben, also habe ich das auch nicht ausprobiert.
Wie Jared Farrish sagte, speichert das Betriebssystem beim Kopieren einer Datei nur den Pfad zur Datei in der Zwischenablage. Wenn Sie das Ereignis paste auf Ihrer Webanwendung erhalten, holen Sie die Zeichenfolge aus der Zwischenablage und leiten Sie sie an Ihre Dateibrücke weiter.
Ich habe gesehen, dass DropBox.com dies ermöglicht (in Chrome - schien nicht im IE zu funktionieren). Ich habe nicht speziell ausschneiden und einfügen, sondern Dateien aus einem lokalen Ordner in eine Dropbox-Seite gezogen und die Dateien hochgeladen. Also, das beantwortet nicht direkt Ihre Frage, aber vielleicht können Sie sehen, wie dies in ihrem Code getan wird.
Tags und Links javascript html5 file-upload extjs