2010-02-04 15 views
25

Jeśli prześlę plik tekstowy za pośrednictwem formularza, czy możliwe jest wydrukowanie jego zawartości bezpośrednio ze zmiennej $ _FILES zamiast zapisywania jej najpierw na serwerze? Wiem, że jest to zagrożenie dla bezpieczeństwa, ale zostanie uruchomione tylko na komputerze lokalnym.PHP odczytano z przesłanego pliku tekstowego?

Wszelkie porady są mile widziane.

Dzięki.

Odpowiedz

41

Plik jest zapisywany w katalogu tymczasowym zaraz po jego przesłaniu, ale można go użyć do odczytania bez konieczności zapisywania w stałym miejscu.

+0

Doh, robiłem to cały czas, ale HTML nie był niczym, co byłoby widoczne na stronie. Używam chrome, więc gdy kliknąłem źródło widoku, pokazałem mi ponownie załadowaną wersję strony, na której plik tekstowy nie został załadowany :) – Dan

4

Niestety, nie. Przynajmniej nie przez zmienną $ _FILES. Przepraszam.

EDYCJA: Jest zawsze zapisywany jako plik tymczasowy w $ _FILES i zawsze będziesz musiał użyć tego dla zawartości.

+2

Okay, w porządku, po prostu nie opublikuję, gdy wiem, że odpowiedź jest zła. – Teekin

+0

Ta odpowiedź jest absolutnie prawdą, ponieważ pytanie zadawane konkretnie o zmiennej $ _FILES, ale myślę, że inne odpowiedzi są poprawne, co post wydaje się pytać! – Lukos

63

Doing

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

obowiązuje jednak należy również sprawdzić, aby upewnić się, że plik został przesłany za pośrednictwem formularza i że nie wystąpił żaden błąd podczas wysyłania:

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']); 
} 

Pomocny link jest http://us2.php.net/manual/en/features.file-upload.php

+1

Witam, dlaczego mam sprawdzić plik przez is_uploaded_file? Czy jest jakiś problem z bezpieczeństwem? Jaki problem może powodować? Czy możesz mi to wyjaśnić lub podać link do posta? Dziękuję Ci – Facedown

Powiązane problemy