| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

17-06-2010, 20:20
|
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
[PHP] is_uploaded_file
hi liebe gemeinde,
ich habe schon länger nach einem verwendungszweck für die oben genannt funktion gesuct, jetzt habe ich scheinbar einen gefunden, allerdings haut das nicht so hin, wie ich will
ich lese mittels opendir ein verzeichnis ein und wende die funktion dann auf die dateien an, zurückgegeben wird true und false. soweit theorie...
sinn des ganzen ist es, verzeichnisse regelmässig zu "scannen" um uploaded files aufzuspühren und zu löschen.
leider geht das absolut nicht.
habe nur false rückgabewerte, obowohl ich zum test ein verzeichnis erstellt habe und einige daten hochgeladen habe, alles local.
leider habe ich auch keine idee mehr, wie ich das realisieren koennte.
über jede hilfe wäre ich sehr verbunden, danke
|

17-06-2010, 20:24
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
For proper working, the function is_uploaded_file() needs an argument like $_FILES['userfile']['tmp_name']
PHP: is_uploaded_file - Manual
Upgeloadete Dateien werden in der Regel von PHP automatisch gelöscht, wenn das Script beendet wird. Das brauchst du nicht selber machen.
Geändert von h3ll (17-06-2010 um 20:27 Uhr)
|

17-06-2010, 21:08
|
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
schonmal danke für die antwort!
die php manual habe ich natürlich stets zur hand.
leider ist dein rat keine hilfe für mein problem:
kurz und knapp: kann ich feststellen ob eine datei irgendwann mal via http auf einen server gekommen ist?
wenn ja, wie? is_uploaded_file scheit ja nicht zu funktinieren
vielen dank!
|

17-06-2010, 21:11
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von svr
kurz und knapp: kann ich feststellen ob eine datei irgendwann mal via http auf einen server gekommen ist?
wenn ja, wie?
|
Indem du zB. alle upgeloadeten Dateien in einer Datenbank einträgst. Oder indem du upgeloadete Dateien in einen gesammelten Ordner kopierst/verschiebst.
Zitat:
Zitat von svr
is_uploaded_file scheit ja nicht zu funktinieren
|
Doch, es funktioniert. Es tut nur nicht das, was du denkst, dass es tut.
|

18-06-2010, 12:03
|
|
svr
Registrierter Benutzer
|
|
Registriert seit: Mar 2010
Beiträge: 60
|
|
hast du dann eine idee, wie ich "meine idee" realisieren kann=?
danke!
|

18-06-2010, 12:10
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Meine Vorschläge hab ich schon genannt. Eine andere Möglichkeit seh ich nicht.
|

18-06-2010, 12:22
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Nur während der Verarbeitung des Upload-Request kann man feststellen, ob eine Datei hochgeladen wurde. Bei späteren Requests/Scriptaufrufen hat man keine Chance, eine hochgeladene Datei als solche zu erkennen. Deshalb muss man, wie h3ll schon sagte, beim Upload-Request einen Vermerk speichern. Punkt, Ende.
Aus dem Thread geht bisher nicht hervor, ob die Dateien überhaupt per HTTP hochgeladen werden. Falls es sich bspw. um FTP-Upload handelt, ist PHP dabei natürlich gar nicht involviert und kann somit auch keinen Vermerk erzeugen. Per FTP hochgeladene Dateien erkennt man bestenfalls an den Metadaten wie Eigentümer oder Permissions. Man kann aber auch eine Negativliste führen (alle Dateien, die nicht per FTP hochgeladen wurden).
|

18-06-2010, 12:48
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Wie wäre es mit der M-Time??
Aus meiner Wühlkiste:
PHP-Code:
<?php
error_reporting(-1);
ini_set('display_errors', TRUE);
setlocale(LC_ALL,'de_DE@euro', 'de_DE', 'de', 'ge');
date_default_timezone_set('Europe/Berlin');
class DatumFilter extends FilterIterator
{
protected $timestamp = 0 ;
public function __construct(Iterator $iterator, $datum)
{
$this->timestamp = strtotime($datum);
parent::__construct($iterator);
}
public function accept()
{
if($this->current() instanceof SPLFileInfo)
return $this->timestamp < $this->current()->getMTime();
else throw new Exception('Kann nur auf Dateien arbeiten!');
}
}
$dir = "./"; // Verzeichnis, welches durchsucht werden soll
$ab = "29.01.2009 16:22"; // Zeige alle ab diesem Datum
$ite = new DatumFilter(
new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir)),$ab);
// Zeige neue Dateien
foreach($ite as $datei)
echo $datei , '<br>';
?>
|

18-06-2010, 15:59
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
Zitat:
Zitat von onemorenerd
Aus dem Thread geht bisher nicht hervor, ob die Dateien überhaupt per HTTP hochgeladen werden.
|
Zitat:
Zitat von svr
kurz und knapp: kann ich feststellen ob eine datei irgendwann mal via http auf einen server gekommen ist?
|
__________________
Drelingdo
Krabonse
Simmannamando
|

18-06-2010, 21:01
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Hoppla, das hatte ich übersehen.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|