programing

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

kingscode 2023. 1. 2. 22:49
반응형

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

파일 핸들로부터 파일명을 취득할 수 있습니까?또는 핸들만 있는 파일을 삭제하려면 어떻게 해야 하나요?

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("some file", "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 파일은 fcloss 할 필요 없이 php가 종료되는 동안 삭제됩니다.

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

반응형