Quickie ...Truy xuất đường dẫn của tmpfile()
Có cách nào để truy xuất đường dẫn của tệp được tạo bởi tmpfile()
không?
Hoặc tôi có cần tự mình thực hiện với tempnam()
không?
Quickie ...Truy xuất đường dẫn của tmpfile()
Có cách nào để truy xuất đường dẫn của tệp được tạo bởi tmpfile()
không?
Hoặc tôi có cần tự mình thực hiện với tempnam()
không?
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);
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.
Chúc mừng, chỉ muốn có một kiểm tra lại. – Zac
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
"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
Như thế này
$path = array_search('uri', @array_flip(stream_get_meta_data($GLOBALS[mt_rand()]=tmpfile())));
file_put_contents($path, 'hello');
+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
$ 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
Tuyệt vời! sys_get_temp_dir() không khả dụng trên máy chủ php cũ 5.1: ( – Pete