Dateiendung erkennen bei upload
Maria D.
- php
Hi Folks,
mit einem Formular mache ich ein Dateiupload.
Von PC auf Webserver.
Funktioniert prima!
Gibt es einen PHP-Befehl, mit dem ich nur die Dateiendung
erkennen kann.
Mit $_FILES['userfile']['name']
bekomme ich "nur" den gesamten Dateiname
z.B. musterdatei.pdf
Ich brauche aber nur die Dateiendung
".pdf" oder "pdf"
Hat mir jemand einen Tip?
Hi,
Gibt es einen PHP-Befehl, mit dem ich nur die Dateiendung
erkennen kann.
Mit $_FILES['userfile']['name']
bekomme ich "nur" den gesamten Dateiname
Du bekommst einen String. Es ist bar jedweden Belanges, dass es sich bei dessen Inhalt irgendwann einmal um einen Dateinamen gehandelt haben könnte.
Ich brauche aber nur die Dateiendung
Welchen Nutzen versprichst Du Dir davon? Was bringt es Dir beispielsweise, wenn jemand eine *.exe als *.html hochgeladen hat?
Cheatah
Mit deiner Antwort kann ich nix anfangen.
Hi,
Mit deiner Antwort kann ich nix anfangen.
dann hast Du nicht lange genug über sie nachgedacht.
Cheatah
Hello,
Mit $_FILES['userfile']['name']
bekomme ich "nur" den gesamten Dateiname
z.B. musterdatei.pdfIch brauche aber nur die Dateiendung
".pdf" oder "pdf"
Mit http://de2.php.net/manual/de/function.pathinfo.php kannst Du den namen zerlegen.
Was willst Du mit der Endung anfangen? Ich hoffe, nichts sicherheitsrelevantes. Denn Clients lügen gerne...
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
danke für deine Antwort.
Mit deinem Befehl muss die Datei ja schon auf dem Webserver sein.
Damit man an die Dateiendung kommt.
Ich möchte aber schon vorher die Dateiendung erkennen und dann auf dem Webserver geändert abspeichern.
cu
hi,
Mit deinem Befehl muss die Datei ja schon auf dem Webserver sein.
Ich möchte aber schon vorher [...]
beim dateiupload über ein formular gibt es kein "vorher".
sobald das formular abgeschickt wird, wird auch die datei auf den server hochgeladen.
alle aktionen deines scriptes werden erst danach erfolgen.
gruß,
wahsaga
hi wahsaga,
DANKE
ich möchte eine datei hochladen und dann der datei einen anderen namen vergeben.
(ohne rename wenn es geht)
name=date("YmdHis");
if(copy($file, "../news/".$name))
{
// ok
}
hierbei geht mir ja die dateiendung verloren.
ich suche sowas in der art:
name=date("YmdHis");
if(copy($file, "../news/".$name.".".$dateiendung))
{
// ok
}
cu
natürlich:
mit $ ;-)
$name=date("YmdHis");
if(copy($file, "../news/".$name))
{
// ok
}
Hello,
natürlich:
mit $ ;-)
$name=date("YmdHis");
if(copy($file, "../news/".$name))
{
// ok
}
Und was ist an "meiner" Lösung dabei Auszusetzen?
Der Originalname der Datei wird doch in
$_FILES['...']['name'] oder übertragen. Den kann man dann zerlegen.
Liebe Grüße aus http://www.braunschweig.de
Tom
$_FILES['...']['name'] oder übertragen. Den kann man dann zerlegen.
hi tom,
genau, wie macht man das?
kannst du mir das mal zeigen.
cu
Hello,
$_FILES['...']['name'] oder übertragen. Den kann man dann zerlegen.
http://de.php.net/manual/de/features.file-upload.php#features.file-upload.post-method
bitte erst durchlesen und auch die UCN (User Contributed Notes) lesen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
Mit deinem Befehl muss die Datei ja schon auf dem Webserver sein.
Damit man an die Dateiendung kommt.
Ich möchte aber schon vorher die Dateiendung erkennen und dann auf dem Webserver geändert abspeichern.
Dann hast Du mit PHP die falsche Kategorie gewählt.
Mit JavaScript kann man den Inhalt eines <input type="file" ...>-Feldes abfragen, aber nicht ändern. Dann solltest Du also eine passende JavaScript-Funktion suchen. Ich könnte mir vorstellen, dass man mit split() weiterkommt.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi
http://www.selfphp.info/funktionsreferenz/regulaere_ausdruecke_posix/split.php
Hi,
Ich weiß nicht ob Du jetzt schon deine Antwort bekommen hast.
Vielleicht hilft Dir das:
/*
$filenam ist die Variable aus dem Formular $HTTP_POST_FILES['fieldname']
$save_location ist der Pfad auf dem Server wo die datei gespeichert werden soll
*/
function upload($filename, $save_location){
$date = date("_dmY");
$filename_umbenannt = ereg_replace("[.]", $date.".", $filename);
/*for debug
echo $filename_umbenannt;
*/
$upload = copy($filename_umbenannt, $save_location);
if($upload){return true);
}
Ist ganz einfach und sollte vielleicht noch ein wenig optimiert werden. Hier gehe ich davon aus das der Dateiname nur einen "."
hat, aber dass muss ja nicht so sein. Deshalb nur als Anregeung betrachten.
Gruß
Devel
Hallo Maria,
Sorry das war falsch!
Probiere das: (bei mir funktioniert)
<form action="<echo $PHP_SELF?>" method="post" enctype="multipart/form-data">
<input type="file" name="files[]" style="width:350px"><br>
<input type="file" name="files[]" style="width:350px"><br>
<input type="submit" name="submit" value="speichern">
</form>
<?
$location = "D://temp//";
if(isset($submit)){
$files = $HTTP_POST_FILES['files'];
foreach ($files['name'] as $key=>$name){
$date = date("_dmY");
$filename_umbenannt = ereg_replace("[.]", $date.".", $name);
$save_location = $location.$filename_umbenannt;
echo $save_location;
$save = copy($files['tmp_name'][$key], $save_location);
unlink($files['tmp_name'][$key]);
if ($save == false) {
print ("Fehler...<br>");
}else{
print ("Gespeichert ...<br>");
}
}//end foreach
}
?>
Devel