![]() |
Dateifunktionen in PHP
hi @all,
mein problem, bei dem ich hoffe, das man mir hier helfen kann: mit php habe ich eine routine geschrieben, mit der ich über eine html-form eine datei auf den webserver übertragen will. soweit funktioniert mein code auch ganz gut, bis auf eine kleinigkeit: ich möchte nur dateien mit einer bestimmten dateiendung übertragen, beispielsweise nur .gif-dateien. im input-tag habe ich sehr wohl den parameter accept="image/gif" angegeben, jedoch lässt sich mein browser (ie6) damit nicht dazu hinreißen, tatsächlich nur .gif-dateien zu übertragen. und über mein php-script lässt sich hier auch nichts machen, da ich ja lediglich das temporäre file am webserver mitgeteilt bekomme - und dieses hat immer die dateiendung .tmp, ist also nicht unterscheidbar. welche 'tricks' kennt ihr für dieses problem....? achja, nochwas: mitunter würde ich die übertragene datei auch wieder löschen wollen. nur habe ich in php keine funktion gefunden, die das macht. alle meine dokumentationen diesbezüglich offenbaren mir nicht, wie's geht. ideen dazu....? thanks! |
ad löschen:
http://www.selfphp.info/funktionsref...nen/unlink.php für sonstiges würd ich auch mal selfphp durchblättern: http://www.selfphp.info/funktionsref...em_funktionen/ mfg Thomas |
danke für die links - aber dieses selfphp habe ich eh zu hause.
dass das löschen einer datei mittels unlink() gemacht wird, ist für mich ziemlich erstaunlich. wer lässt sich so einen namen für's löschen einer datei einfallen....? kein wunder, dass ich nicht fündig geworden bin. :confused: bezüglich dem anderen problem bin ich samt selfphp nicht weiter gekommen. es gibt zwar die funktion filetype, die liefert aber immer nur '.tmp' zurück - weil ja das der filename am server ist. für mich schaut es fast so aus, als ob ich diese prüfung auf die gewünschte dateiendung VOR dem versenden in javascript lösen müsste. nur bin ich dort auch noch nicht so firm, dass ich das aus dem ärmel schütteln könnte.... :( |
http://de.php.net/manual/de/features.file-upload.php
$_FILES['userfile']['type'] Der Mime-Type der Datei, falls der Browser diese Information zur Verfügung gestellt hat. Ein Beispiel wäre "image/gif". |
du kannst ja mit:
$_FILES['file']['name'] (wobei 'file' bei mir der name des dateiuploadfeldes ist) Den Dateinamen auslesen. Dann kannst du ja von hinten beginnend den String bis zum letzten Punkt auslesen -> Dateierweiterung. Hab hier momentan keine php Testumgebung, werd zuhause mal schaun, ob es noch andere Varianten gibt. mfg Thomas |
Zitat:
interessant finde ich ja auch, dass der parameter 'accept' im input-tag lediglich informellen charakter zu haben scheint. übertragen kann ich trotzdem alles, was ich will. naja, werde heute abend eure tipps probieren.... |
ne, in $_FILES['file']['tmp_name']; steht der Temporäre Name drin, in $_FILES['file']['name'] der wirkliche.
vielleicht gibts auch ein $_FILES['file']['extension'] - keine Ahnung mfg Thomas [edit] google hilft: $_FILES['userfile']['name'] The original name of the file on the client machine. $_FILES['userfile']['type'] The mime type of the file, if the browser provided this information. An example would be "image/gif". $_FILES['userfile']['size'] The size, in bytes, of the uploaded file. $_FILES['userfile']['tmp_name'] The temporary filename of the file in which the uploaded file was stored on the server. $_FILES['userfile']['error'] The error code associated with this file upload. ['error'] was added in PHP 4.2.0. bzw. http://p2p.wrox.com/topic.asp?TOPIC_ID=2629 [/edit] |
Zitat:
<Sinnloses Wissen fuer mind. 500 Euro> Das Unix-Dateisystem unterscheidet zwischen Daten, die durch eine Inode beschrieben werden und Pfadnamen, die innerhalb von Verzeichnissen auf die Inodes verweisen. Eine Inode kann dabei mehrere Pfadnamen haben, was in der Unix-Terminologie Link genannt wird. Unter Unix ruft "rm" intern den Systemruf unlink auf, der einen solchen Link und den zugehörigen Pfadnamen entfernt. Die Inode und die Datenblöcke werden aber erst freigegeben wenn 1. der letzte Link auf eine Inode entfernt wird und 2. kein Prozess mehr auf die Daten zugreift. http://de.wikipedia.org/wiki/Rm_(Unix) Aus der manpage von unlink: Zitat:
Wobei ich die englische Manpage fuer aussagekraeftiger halte: http://www.opengroup.org/onlinepubs/...ns/unlink.html </Sinnloses Wissen fuer mind. 500 Euro> Und Erfunden haben das in diesem Fall nicht die Schweizer, sondern vermutlich Dennis Ritchie und Ken Thompson, die Vaeter von C und UNIX. UNIX is simple and coherent, but it takes a genius (or at any rate a programmer) to understand and appreciate the simplicity. Dennis Ritchie |
Also mich hat dieses Wissen keine 500€ gekostet, nur ein paar Jahre HTL ;);)
mfg Thomas |
Zitat:
wohl auch ein grund, warum ich mich bislang erfolgreich gegen jede art von linux auf meinem rechner gewehrt habe. ich will effizient arbeiten und mir keine gedanken über etwaige internas des betriebssystems machen müssen. :cool: @T.dot: hab's gestern getestet - und es funktioniert tatsächlich! :o thanks für die infos.... |
Alle Zeitangaben in WEZ +2. Es ist jetzt 18:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag