PHP | tempnam 函數

怎樣創建一個具有唯一文件名的文件

最近更新時間 2021-01-25 16:42:13

tempnam 函數創建一個具有唯一文件名的文件。

tempnam() 函數在指定目錄中建立一個具有唯一文件名的文件。如果該目錄不存在,會在系統臨時目錄中生成一個文件,並返回其文件名。成功後返回文件名。

函數定義

tempnam ( string $dir , string $prefix ) : string
// 源文件位於:ext/standard/file.c
# 函數定義

PHP_FUNCTION(tempnam)
{
  char *dir, *prefix;
  size_t dir_len, prefix_len;
  zend_string *opened_path;
  int fd;
  zend_string *p;

  ZEND_PARSE_PARAMETERS_START(2, 2)
    Z_PARAM_PATH(dir, dir_len)
    Z_PARAM_PATH(prefix, prefix_len)
  ZEND_PARSE_PARAMETERS_END();

  if (php_check_open_basedir(dir)) {
    RETURN_FALSE;
  }

  p = php_basename(prefix, prefix_len, NULL, 0);
  if (ZSTR_LEN(p) > 64) {
    ZSTR_VAL(p)[63] = '\0';
  }

  RETVAL_FALSE;

  if ((fd = php_open_temporary_fd_ex(dir, ZSTR_VAL(p), &opened_path, 1)) >= 0) {
    close(fd);
    RETVAL_STR(opened_path);
  }
  zend_string_release_ex(p, 0);
}

參數

  • checkdir -文件的目錄。
  • checkprefix -文件的前綴。

返回值

  • checkbool - 成功時返回新的臨時文件名,失敗時返回 false。

示例1: - 使用 tempnam() 函數創建一個具有唯一文件名的文件。

<?php
/**
 * PHP tempnam() 函數創建一個具有唯一文件名的文件
 *
 * @since Version 1.0.0
 * @filesource
 */

// 創建臨時文件
$tmpname = tempnam("foo", "foo");

echo 'FileName::'.$tmpname.PHP_EOL;
FileName::/tmp/fooDpcbeP
注意:因為 foo 目錄不存在,系統自動在 /tmp 目錄下創建了文件。
rss_feed