【发布时间】:2018-12-23 07:16:38
【问题描述】:
我有一个文件的内容在一个字符串中。我需要将此文件传递给一个函数,该函数期望参数是文件的名称,而不是内容。显而易见且可能最简单的方法是将内容写入临时文件,然后将该文件名传递给函数,并在完成后取消链接文件。
但是,我正在寻找一种不涉及将文件写入文件系统然后再将其读回的解决方案。我在多种情况下都需要这个,所以我没有在寻找用于解决特定函数,但更多的是通用方法,适用于任何需要文件名的函数(例如file_get_contents())。
这里有一些想法,但不知道如何实现这些:
- 是否可以将内容写入内存中的某处,然后
将其作为文件名传递给函数?也许使用的东西
php://memory。 - 是否可以将内容写入管道,然后传递名称 管道到函数?
我对@987654325@ 做了一个简短的概念验证,如下所示,但没有运气:
$data = "This is some file data.\n";
file_put_contents( 'php://memory', $data );
echo file_get_contents( 'php://memory' );
想知道解决这个问题的好方法。谷歌搜索没有为我提供任何信息。
【问题讨论】:
-
你避开了房间里的大象。你用的是什么功能?
-
从stackoverflow.com/questions/7719376/…看来,如果你打开 php://memory 两次,那么它无论如何都会是不同的内容。
-
您也许可以使用mikey179/vfsStream 但这听起来有点XY 问题。我的意思是,如果你知道字符串的内容来自一个文件,为什么不直接使用那个文件呢?
-
@Andreas 我并没有回避这个问题,我通过说我正在寻找一个通用解决方案来解决这个问题,该解决方案将适用于任何需要文件名的函数。在这个特定的例子中,我正在使用
curl_file_create(),但我不确定这是否相关。 -
@AlexHowansky "如果你知道字符串的内容来自文件" - 在这种特殊情况下,文件的内容被接收到 API 中,因此磁盘上没有文件我可以访问,只有内容作为字符串。我想将此数据传递给一个需要文件名的函数,而不必先将其写入磁盘(似乎浪费资源)。
标签: php