我创建了多个基于内存的文件,如下所示:
$fp1 = fopen("php://memory", 'rw+');
fputs($fp1, "hello1");
rewind($fp1);
$fp2 = fopen("php://memory", 'rw+');
fputs($fp2, "hello2");
rewind($fp2);
echo stream_get_contents($fp1);
echo stream_get_contents($fp2);
现在我希望CURL可以上传这些文件。我知道如何使用$post['file'] = "@large.jpg";
对磁盘上存在的多个文件进行POST,但现在我的文件在内存中。
如何进行?
答案 0 :(得分:2)
Afaik没有办法让cURL访问php://文件。我有一个类似的问题,我在操作系统级别创建了一个内存磁盘
Unix的:
mkfs -q /dev/ram1 8192
mkdir -p /ramcache
mount /dev/ram1 /ramcache
这样你仍然可以很容易地使用类似的构造用于php:// memory
$fp1 = fopen('/ramcache/somefile1', 'rw+');
$fp2 = fopen('/ramcache/somefile2', 'rw+');
但也将它作为真实文件传递给cURL,而不是将它从php://内存转换为真实文件,然后再传递给cURL