Как создать временный файл с указанным расширением в php.
Я наткнулся на tempnam()
, но с его помощью расширение не может быть указано.
Создайте временный файл с определенным расширением, используя php
Ответ 1
Это может имитировать mkstemp()
(см. http://linux.die.net/man/3/mkstemp), достигая того, что вы хотите сделать:
function mkstemp( $template ) {
$attempts = 238328; // 62 x 62 x 62
$letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$length = strlen($letters) - 1;
if( mb_strlen($template) < 6 || !strstr($template, 'XXXXXX') )
return FALSE;
for( $count = 0; $count < $attempts; ++$count) {
$random = "";
for($p = 0; $p < 6; $p++) {
$random .= $letters[mt_rand(0, $length)];
}
$randomFile = str_replace("XXXXXX", $random, $template);
if( !($fd = @fopen($randomFile, "x+")) )
continue;
return $fd;
}
return FALSE;
}
Итак, вы можете сделать:
if( ($f = mkstemp("test-XXXXXX.txt")) ) {
fwrite($f, "test\n");
fclose($f);
}
Ответ 2
мой способ использует tempnam
$file = tempnam(sys_get_temp_dir(), 'prefix');
file_put_contents($file.'.extension', $data);
{
//use your file
}
unlink($file);//to delete an empty file that tempnam creates
unlink($file.'.extension');//to delete your file
Ответ 3
Самый простой способ, который я нашел, - создать временный файл, а затем просто переименовать его. Например:
$tmpfname = tempnam(sys_get_temp_dir(), "Pre_");
rename($tmpfname, $tmpfname .= '.pdf');
Ответ 4
Возможно использование
move_uploaded_file($tmp_name, "$uploads_dir/$name.myextension");
См. http://php.net/manual/en/function.move-uploaded-file.php#example-2209
Ответ 5
public static function makeTempFileInFolder($prefix, $suffix, $folder="")
{
if (strlen($folder)==0) $folder = sys_get_temp_dir();
do {
$file = $folder."/".$prefix.rand(1,99999).time().$suffix;
} while (file_exists($file));
return $file;
}