File Formular auslesen(dateiname,inhalt)
Andreas Neurath
- perl
0 Yuri0 Siechfred0 Andreas Neurath
Hallo
ich habe folgendes problem.
Ich möchte einen dateiupload zu einem server realisieren.
dazu existiert in meiner hompage.pl ein
formular <input type=file etc..> in dem die datei angegegeben wird die hochgeladen werden soll.
-------------------------------------------------------
<FORM name=insertform method=POST action=/cgi-bin/homepage.pl?session=&sprache=&job=linkinfozeigen&openjob=veranstaltungeinfuegenvorinsert&id=$id&open1=$open1 enctype=multipart/form-data>
<input type=hidden name=pfad value=''>
<tr><td height=35 class=mittetext>Datei Download:</td><td><input name=download size=64 type=file></td></tr>
<
<tr><td class=mittetext colspan=2 align=center>
<input type=submit value=speichern onClick=document.insertform.pfad.value=document.insertform.download.value>
<a onClick=document.insertform.pfad.value=document.insertform.download.value href=javascript:document.insertform.submit()>Hinzufügen</a></td></tr>
<script type=text/javascript>
document.insertform.pfad.value = document.inseretform.download.value;
</script>
</FORM>
---------------------------------------------------------------
was funktioniert ist das eine datei auf dem server erstellt wird mit dem korrekten inhalt upload funktioniert also.
mein problem ist das ich es nicht schaffe den dateinamen auszulesen, um an die extension zu gelangen.
in meinem beispiel oben habe ich 3 methoden angegeben mit denen ich es schon versucht habe.
1. den wert des file feldes direkt per onclickevent im INPUTfeld einem anderen feld zeuweisen und diesen später über $FORM{'feldname'} auslesen.
<input type=submit value=speichern onClick=document.insertform.pfad.value=document.insertform.download.value>
2.das selbe wie bei 1. über einen link mit submit funktion.
<a onClick=document.insertform.pfad.value=document.insertform.download.value href=javascript:document.insertform.submit()>Hinzufügen</a>
3.mit einem eigenen script
<script type=text/javascript>
document.insertform.pfad.value = document.inseretform.download.value;
</script>
anm.: document.inseretform.download.value bezeichnet das upload feld ;)
gibt es vll eine andere einfache möglichkeit wie ich den dateinamen aus einem FILE-Feld auslesen kann oder alternativ warum meine versuche mit obiger lösung nicht funktionieren.
danke
gruß andreas
Hallo!
Mit Pearl kenne ich mich leider nicht aus. Hab aber so was ähnliches für PHP gemacht. Eventuell hilft das ja:
<input type="file" name="probe" />
...
<?php
...
if (isset($_FILES['probe']) and ! $_FILES['probe']['error'])
{
// Alternativ: and $_FILES['probe']['size']
//Wenn die Datei auf dem Server bereits vorhanden dann löschen:
if(file_exists($filename))
{
//delete file!
unlink($filename);
}
move_uploaded_file($_FILES['probe']['tmp_name'], "./newfile.txt");
printf("Die Datei %s steht jetzt als " . "newfile.txt zur Verfügung.<br />\n",$_FILES['probe']['name']);
printf("Sie ist %u Bytes groß und vom Typ %s.<br /><br>\n",$_FILES['probe']['size'], $_FILES['probe']['type']);
// liest den Inhalt einer Datei in einen String
$filename = "./newfile.txt";
$handle = fopen ($filename, "r");
while ( ($data = fgetcsv ($handle, 1000, ";")) !== FALSE )
{ //Daten auslesen in $data
....
}
fclose ($handle);
}
....
Also mein Beispiel lädt eine Datei auf den Server und verarbeitet diese dann weiter. Vielleich hilft ja was davon. Versuch mal mit $_FILES auf den Namen zu kommen.
MfG
Yuri
<input name=download size=64 type=file>
Was ergibt eine Abfrage nach dem Inhalt des Formularfeldes?
- den wert des file feldes direkt per onclickevent im INPUTfeld einem anderen feld zeuweisen und diesen später über $FORM{'feldname'} auslesen.
Doppelt gemoppelt. Und kennst du das CGI-Modul?
gibt es vll eine andere einfache möglichkeit wie ich den dateinamen aus einem FILE-Feld auslesen kann
Sieh dir http://perldoc.perl.org/CGI.html#CREATING-A-FILE-UPLOAD-FIELD an, dort insbesondere den Teil zu upload() und uploadInfo(). Wo der Fehler in deinem Script liegt, kann man ohne es zu kennen nicht sagen.
Siechfred
vielen dank für eure vorschläge
habe nun eine lösung gefunden diese hängt wie angedeutet tatsächlich mit dem eigentlichen cgi script zusammen.
dort wird sowohl die datei hochgeladen als auch der name der datei ausgelesen. dies ist wensentlich einfacher als dieses unnötige formular auslesen^^.
man sollte sich halt doch nich immer auf die aussagen bzw lösungswege anderer verlassen ;)
noch mal vielen dank
gruß andreas