2013-05-10 14 views

Odpowiedz

21
$path = tempnam(sys_get_temp_dir(), 'prefix'); 

Zobacz this example.

+1

oh crap, 'tempnam' zwraca nazwę pliku. to działa, dziękuję! –

+3

W oryginalnym kodzie plik jest usuwany po wyjściu skryptu/awarii. Ten zostawia śmieci za sobą. Zobacz odpowiedź @ bishopa na właściwe rozwiązanie. – AndreKR

+0

Pierwszy parametr dla katalogu nie jest brany pod uwagę na platformach Windows. Który zawsze używa C: \ Windows \ Temp \. – tim

2

Zamiast tego należy użyć funkcji tempnam?

+0

W porządku, ale mimo to, skąd mam znać pełną ścieżkę do pliku 'tempnam'? –

+0

oh crap, 'tempnam' zwraca nazwę pliku. to działa, dziękuję! –

27

tmpfile zwraca wskaźnik pliku. Aby uzyskać podstawową ścieżkę, trzeba ask the stream for its meta data:

$file = tmpfile(); 
$path = stream_get_meta_data($file)['uri']; // eg: /tmp/phpFx0513a 

Zaletą podejścia tmpfile? PHP automatycznie usuwa $path, gdy $file wychodzi poza zakres. Przy tempnam musisz ręcznie usunąć utworzony plik.