Program Tip

파일 핸들을 사용하여 파일 이름 가져 오기 (또는 파일 삭제)

programtip 2020. 11. 20. 09:26
반응형

파일 핸들을 사용하여 파일 이름 가져 오기 (또는 파일 삭제)


파일 핸들에서 파일 이름을 얻을 수 있습니까? 또는 핸들 만있는 파일을 어떻게 삭제할 수 있습니까?


stream_get_meta_data은 . tmpfile ()에서 얻은 스트림에 대해 작동합니다. 일반 파일 포인터에서 호출하면 기본 이름 만 얻을 수 있습니다.

$meta_data = stream_get_meta_data($stream_or_file_pointer);
$filename = $meta_data["uri"];
echo $filename;

tmpfile ()의 예 :

"/private/var/folders/v3/n54x13jx5v7610fw9dm0wcxm0000gn/T/phpCJvevP"

fopen ( "somefile", "r")의 예 :

"test"

네. Afaik에는 직접적으로 PHP에 기능이 없습니다. 하지만 Linux에서는 할 수 있습니다.

$fp = fopen('somefile', 'r');
$stat = fstat($fp);
$inode = $stat['ino'];
system("find -inum $inode", $result);
echo $result;

이것은 테스트되지 않았으므로 조정이 필요할 수 있습니다.

편집은 분명히 존재 입니다 간단한 해결책 .


이를 위해 파일 이름을 저장하는 래퍼를 만들어야합니다. 파일 핸들에는 생성 된 파일 이름의 컨텍스트가 없습니다.


임시 파일을 사용하는 깨끗한 방법 :

<?
$tmp=array_search('uri', @array_flip(stream_get_meta_data($GLOBALS[mt_rand()]=tmpfile())));
file_put_contents($tmp, 'hello');
echo file_get_contents($tmp);
?>

tmp 파일을 닫을 필요없이 PHP가 종료되는 동안 삭제됩니다.

참고 URL : https://stackoverflow.com/questions/5144583/getting-filename-or-deleting-file-using-file-handle

반응형