2012-06-26 31 views

Trả lời

87

Dường stream_get_meta_data() cũng làm việc:

$tmpHandle = tmpfile(); 
$metaDatas = stream_get_meta_data($tmpHandle); 
$tmpFilename = $metaDatas['uri']; 
fclose($tmpHandle); 
+17

+1 Để thực sự trả lời câu hỏi. Kể từ PHP 5.3, bạn chỉ có thể sử dụng 'stream_get_meta_data ($ tmpHandle) ['uri']'. – flu

+0

$ foo() ['bar'] không hoạt động trên PHP 5.3.13 của tôi, nhưng nếu không câu trả lời này là câu trả lời chính xác cho câu hỏi được hỏi ở trên. – DarkSide

+0

Tuyệt vời! sys_get_temp_dir() không khả dụng trên máy chủ php cũ 5.1: ( – Pete

0

sys_get_temp_dir()

Sẽ trả về thư mục hiện tại của cấu hình để lưu trữ tệp tmp.

Đối với tên tệp được tạo, bạn sẽ sử dụng tempnam() để sử dụng đường dẫn tệp, hoàn chỉnh với tên, được xác định bởi bạn/người dùng nhập.

http://www.php.net/manual/en/function.sys-get-temp-dir.php

+1

Chúc mừng, chỉ muốn có một kiểm tra lại. – Zac

+3

Lưu ý rằng 'tempnam()' sẽ không tự động xóa tệp khi tập lệnh kết thúc, bạn sẽ phải tự làm điều đó. – sp00n

+0

"Tệp sẽ tự động bị xóa khi đóng (ví dụ: bằng cách gọi fclose() hoặc khi không có tham chiếu nào còn lại đến xử lý tệp được trả về bởi tmpfile()) hoặc khi tập lệnh kết thúc". http://php.net/manual/en/function.tmpfile.php – Andrew

0

Như thế này

$path = array_search('uri', @array_flip(stream_get_meta_data($GLOBALS[mt_rand()]=tmpfile()))); 
file_put_contents($path, 'hello'); 
Các vấn đề liên quan