Inhalt einer Datei in ein Div laden

Ich habe leider schlechte Nachrichten, es gibt für Vista keine wirkliche Alternative :(

Das einzige, was sicher funktionieren würde, wäre ein Workaround mit einem HTML-Upload-Feld.

Alles andere würde Vorraussetze, dass bestimmte Software auf dem Rechner installiert ist(z.B. MSOffice)...oder du müsstest eine Lizenz erwerbem für eine Control, um sie in deiner Anwendung verwenden zu dürfen.


<edit>mal gucken, was dies Vista-Dings dort macht :-) </edit>
 
Zuletzt bearbeitet:
Hm... also eine XP Version haben wir ja schon. Vielleicht gibt es eine Methode, die nur unter Vista läuft. Dann erstelle ich eben zwei hta Datein (vista_start.hta udn xp_start.hta)

Ist besser als nicht. Bei Vista sollte man ja den Open File Dialoge von der Sidebar verwenden können. Vielleicht hilft auch das hier:

http://weblogs.asp.net/kennykerr/ar...1320_-Part-6-_1320_-The-New-File-Dialogs.aspx

Und btw.: http://www.howtogeek.com/howto/wind...n-the-file-opensave-dialog-with-the-keyboard/

Löst das Problem zwar nicht, aber vielleicht interessiert es dich ;)
 
Ok, dann probier mal das :suspekt:
Code:
function save_file(f)
{

  shell   = new ActiveXObject('Shell.Application');
  folder  = shell.BrowseForFolder(0,"Verzeichnis auswählen", 0, 5);
  if(folder !=  null)
    {
      try{target  = folder.parentFolder.ParseName(folder.Title).Path;}
      catch(e){target = new ActiveXObject('WScript.shell').SpecialFolders('MyDocuments');}
      
      fso.CopyFile (fso.getFile(window.location.pathname).parentFolder.path+"\\"+f, 
          fso.getFolder(target).path+"\\"+fso.GetFileName(f));
    }
}
 
Hi Sven,

ich hab gutes zu verkünden ;) Es funktioniert unter Vista UND XP!

Ich habe aber den Startordner (ssfWINDOWS) geändern. Du nutzt in deinem Beispiel das Dokumentenverzeichniss des Users, aber dadurch kann ich nicht höher in der Hirarchie (übergeordnete Ordner) gehen.

Ich hab den Desktop (0) gewählt, da man so zu jedem Ordner navigieren kann. Hier ein etwas optimierter Code, damit auch andere User sehen was ich mit ssfWINDOWS meine ;)

[Update]
Hab jetzt doch wieder die "Eigenen Datein" gewählt (5), da man sonst das Dokument nicht überall speichern kann. Der Dialog schließt sich und wenn der User keine Rechte über den Ordner hat, dann wird das Dokument auch nicht gespeichert. Der User kriegt aber keine Warnung angezeigt. Daher Belasse ich es bei den Eigenen Dateien, da der User dort überall Schreibrechte hat.
[/Update]

PHP:
function save_file(f)
{
  var ssfWINDOWS = 5;

  shell   = new ActiveXObject('Shell.Application');
  folder  = shell.BrowseForFolder(0,"Verzeichnis auswählen", 0, ssfWINDOWS);
  
  if(folder !=  null)
    {
      try{target  = folder.parentFolder.ParseName(folder.Title).Path;}
      catch(e){target = new ActiveXObject('WScript.shell').SpecialFolders('MyDocuments');}
      
      fso.CopyFile (fso.getFile(window.location.pathname).parentFolder.path+"\\"+f, 
          fso.getFolder(target).path+"\\"+fso.GetFileName(f));
    }
}

Also vielen vielen Dank nochmal...

neon geht zur Bar und holt zwei kalte Bier...

Ich würde sagen, dass das Problem damit gelöst wäre ;)

Gruß,
London
 
Zuletzt bearbeitet:
Einen kleinen(man könnte es auch auch als sehr grossen ansehen) Schönheitsfehler hat die Sache noch...vorhandene Dateien werden ohne Warnung überschrieben....so kann man das nicht auf die Welt loslassen, wenn man vor etwaigen Schadensersatzforderungen sicher sein will :-(

Nachdem ich hunderte Seiten zu dem Thema gewälzt habe, bin ich fast der Ansicht, dass nur eine selbst zusammengebastelte Dateiauswahlbox ein befriedigendes Hilfsmittel wäre.:rolleyes:
 
Hm,... das ist zwar keine sehr gute Nachricht, aber ich denke das mit einem Hinweiß in der Box die Sache etwas entschärft werden kann.

Klar, es ist keine Lösung, jedoch kann sich ein Benutzer nicht beschweren, wenn er Dateien überschrieben hat. Zudem ist ja der Dateiname bereits vorgegeben und somit fällt die Gefahr, das man etwas überschreibt, eher gering aus.

Vielen Dank jedoch für den Hinweiß. Hab das selber gar nicht mitbekommen.
 
Hi,

der CopyFile-Methode kann noch ein dritter Parameter übergeben werden, der das Überschreiben regelt.

Vielleicht ist folgendes Fragment eine Lösung:
Code:
try{
  fso.CopyFile (fso.getFile(window.location.pathname).parentFolder.path+"\\"+f,
    fso.getFolder(target).path+"\\"+fso.GetFileName(f),
    false);
}catch(e){
  alert("Datei existiert bereits!");
}
Ciao
Quaese
 
Zurück