반응형
파일 핸들을 사용하여 파일 이름 가져 오기 (또는 파일 삭제)
파일 핸들에서 파일 이름을 얻을 수 있습니까? 또는 핸들 만있는 파일을 어떻게 삭제할 수 있습니까?
이 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
반응형
'Program Tip' 카테고리의 다른 글
JavaScript를 사용하여 ID가있는 td에 텍스트를 삽입하는 방법 (0) | 2020.11.20 |
---|---|
REPL에서 Clojure 버전을 표시하는 방법은 무엇입니까? (0) | 2020.11.20 |
MySQL의 "IF EXISTS"사용 (0) | 2020.11.20 |
IntelliJ에서 한 줄에 대한 경고 비활성화 (0) | 2020.11.20 |
postgresql의 IF-THEN-ELSE 문 (0) | 2020.11.20 |