如何将文件内容复制到PHP中的临时文件中?

时间:2014-05-13 14:13:59

标签: php temporary-files

我试过了:

$temp = tmpfile();
file_put_contents($temp,file_get_contents("$path/$filename"));

但是我收到了这个错误:"警告:file_put_contents()希望参数1为字符串,"

如果我尝试:

echo file_get_contents("$path/$filename");

它返回将文件内容屏幕化为长字符串。 我哪里错了?

2 个答案:

答案 0 :(得分:23)

在示例中,您需要tempnam()而不是tmpfile()

  • tempnam()创建一个临时文件,并以String的形式返回它的路径。然后,您可以将该字符串传递给file_put_contents。完成后,您必须记住手动删除临时文件。

  • tmpfile()创建一个临时文件,并返回一个文件资源/指针,用于fwrite()和其他文件操作函数。此外,一旦脚本执行结束,tmpfile()创建的临时文件将自动删除。


以下是使用tempnam()代替tmpfile()的示例脚本:

$temp = tempnam(sys_get_temp_dir(), 'TMP_');

file_put_contents($temp, file_get_contents("$path/$filename"));

答案 1 :(得分:14)

tmpfile()以读写(w +)模式创建一个具有唯一名称的临时文件,并返回一个文件句柄以用于fwrite。

$temp = tmpfile();
fwrite($temp, file_get_contents("$path/$filename"));

关闭时会自动删除该文件(例如,通过调用fclose(),或者对tmpfile()返回的文件句柄没有剩余引用),或者脚本结束时。看看php ref