如何在PHP中将文件内容复制到临时文件中?
我试过这个:如何在PHP中将文件内容复制到临时文件中?,php,temporary-files,Php,Temporary Files,我试过这个: $temp = tmpfile(); file_put_contents($temp,file_get_contents("$path/$filename")); 但是我得到了这个错误:“警告:file\u put\u contents()期望参数1是字符串,” 如果我尝试: echo file_get_contents("$path/$filename"); 它将返回以长字符串形式显示文件内容。 我错在哪里?tmpfile()在读写(w+)模式下创建一个具有唯一名称的临时文件
$temp = tmpfile();
file_put_contents($temp,file_get_contents("$path/$filename"));
但是我得到了这个错误:“警告:file\u put\u contents()期望参数1是字符串,”
如果我尝试:
echo file_get_contents("$path/$filename");
它将返回以长字符串形式显示文件内容。
我错在哪里?tmpfile()
在读写(w+)模式下创建一个具有唯一名称的临时文件,并返回一个文件句柄,例如与fwrite一起使用
$temp = tmpfile();
fwrite($temp, file_get_contents("$path/$filename"));
文件在关闭时(例如,通过调用fclose(),或当tmpfile()返回的文件句柄没有剩余引用时)或脚本结束时自动删除。请看。在您给出的示例中,您想要而不是想要
- 创建临时文件并将其路径作为字符串返回。然后可以将该字符串传递到文件内容中。完成临时文件后,必须记住手动删除它
- 创建一个临时文件并返回一个文件资源/指针,用于
和其他文件操作函数。此外,一旦脚本执行结束,由fwrite()
创建的临时文件将自动删除tmpfile()
以下是您的示例脚本,使用而不是:
tmpfile-创建一个临时文件
并返回一个文件指针而不是stringusetempnam
它返回的是字符串文件名而不是资源。我认为参数列表是零基的注意!在这种情况下,您需要自己删除该文件,以防不再需要它,因为它不是自动完成的。@alkaponey确切地说,只需一个简单的取消链接($temp)
您可以删除临时文件。复制($path/$filename,$temp)
将使用更少的cpu和内存资源。
$temp = tempnam(sys_get_temp_dir(), 'TMP_');
file_put_contents($temp, file_get_contents("$path/$filename"));