Kurt: IO bzw. CGI.pm Upload speichern

Beitrag lesen

Moin Moin!

remoin!

Wärs nicht besser das Tempfile direkt vom OS umkopieren zu lassen statt es Häppchenweise durchs Script zu tunneln???

Wenn Du "Private Temp Files" einschaltest (und dich nicht gerade mit Windows oder ähnlichen Krücken rumschlägst),

hab ich nich. weder noch.

kommt außer deinem CGI kein anderes Programm mehr an die Temp-Files heran, weil sie zwar noch als File existieren, aber kein Verzeichniseintrag mehr auf die Files verweist.

mag ja sein, aber ich will das File nicht kopieren sondern per verschieben. Sprich einen Hardlink anlegen. In perl akzeptiert "link" aber keine Filehandles. Und ein shell "mv" kann ich auch nicht ausführen.

Und rate mal, wie das "Betriebssystem" Dateien kopiert. Richtig, blockweise kopieren, nur die Blockgröße variiert je nach Kopiermethode.

jep, ist klar, in meinem FS liegt die Blockgröße bei 4096.
Aber abgesehen davon dass ich ja nicht kopieren möchte, bezweifle ich dass Perl das annähernd so performant macht wie das OS.

Wie bekomme ich eigentlich den Pfad eines Filehandles wieder raus wenn es zu einem File gehört?

Ein Filehandle hat keinen Pfad. Was möchtest Du? Von einem Handle auf einen Dateinamen schließen? Das geht nicht, u.a. wegen Hardlinks.

stimmt ... leider ... eine FS-Funktion die mir die Pfade aller Hardlinks zu einem Handle ausspuckt wär wirklich nett...schöner Traum...

Von einem CGI-Upload-Filehandle-Objekt den Namen der Temp-Datei erfahren, sofern "Private Temp Files" abgeschaltet ist? Das steht in der Doku zum CGI-Modul.

ach! wo? ich hab die perldoc zigmal durchforst

Ohne nachzusehen meine ich mich zu erinnern, dass das Objekt den Strinigfy-Operator überlädt um den Temp-File-Namen zurückzugeben. "".$tempfile oder "$tempfile" müßten es tun.

also sowas?

my  $upload_fh = $query->upload($name);
 print h1("[".$upload_fh."]");

das liefert mir den Filenamen auf der Clientseite, nicht das tempfile auf dem Server!

Ich danke für deine (charmanten) Infos! :)

Tschau
  Kurt