2010-02-04 13 views
25

Wenn ich eine Textdatei über ein Formular hochlade, ist es möglich, den Inhalt direkt aus der Variablen $ _FILES auszugeben, anstatt sie zuerst auf dem Server zu speichern? Ich weiß, dass dies ein Sicherheitsrisiko darstellt, aber es wird nur auf einem lokalen Computer ausgeführt.PHP aus hochgeladenen Textdatei gelesen?

Jeder Ratschlag geschätzt.

Danke.

Antwort

41

Die Datei wird im Moment des Hochladens im temporären Verzeichnis gespeichert, aber Sie können $_FILES['uploadedfile']['tmp_name'] verwenden, um sie zu lesen, ohne an einem festen Ort speichern zu müssen.

+0

Doh, das habe ich die ganze Zeit gemacht, aber das HTML war nichts, was auf der Seite zu sehen wäre. Ich benutze chrome, also wenn ich Quelltext angeklickt habe, zeigte es mir eine neu geladene Version der Seite, wo die Textdatei nicht geladen wurde :) – Dan

4

Leider nein. Zumindest nicht durch die Variable $ _FILES. Es tut uns leid.

EDIT: Es wird immer als temporäre Datei in $ _FILES gespeichert und Sie müssen immer diese für den Inhalt verwenden.

+2

Okay, gut, ich werde nur nicht posten, wenn ich weiß, die Antwort ist eine schlechte Nachricht! – Teekin

+0

Diese Antwort ist streng zutreffend, weil die Frage speziell nach der Variablen $ _FILES gestellt wurde, aber ich denke, die anderen Antworten sind richtig für das, was der Beitrag zu fragen scheint! – Lukos

63

Doing

file_get_contents($_FILES['uploadedfile']['tmp_name']); 

gilt aber Sie sollten auch überprüfen, um sicherzustellen, dass die Datei über ein Formular und keine Fehler hochgeladen wurde beim Hochladen aufgetreten:

if ($_FILES['uploadedfile']['error'] == UPLOAD_ERR_OK    //checks for errors 
     && is_uploaded_file($_FILES['uploadedfile']['tmp_name'])) { //checks that file is uploaded 
    echo file_get_contents($_FILES['uploadedfile']['tmp_name']); 
} 

Ein hilfreicher Link ist http://us2.php.net/manual/en/features.file-upload.php

+1

Hallo, warum sollte ich die Datei über is_uploaded_file überprüfen? Gibt es ein Sicherheitsproblem? Welches Problem kann es verursachen? Kannst du es mir erklären oder einen Link zum Post geben? Vielen Dank – Facedown