我试过了:
$temp = tmpfile();
file_put_contents($temp,file_get_contents("$path/$filename"));
但是我收到了这个错误:"警告:file_put_contents()希望参数1为字符串,"
如果我尝试:
echo file_get_contents("$path/$filename");
它返回将文件内容屏幕化为长字符串。 我哪里错了?
答案 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。