我正在尝试从'php:// memory'流加载excel文件。
这是我的代码:
$path = 'http://<server>/test.xls';
$temp_file = fopen('php://memory', 'w+');
$file_contents = file_get_contents($path);
fwrite($temp_file, $file_contents);
$objPHPExcel = PHPExcel_IOFactory::load($temp_file);
fclose($temp_file);
我收到了这些错误:
PHP Warning: pathinfo() expects parameter 1 to be string, resource given in /var/resources/classes/PHPExcel/IOFactory.php on line 224
PHP Warning: file_exists() expects parameter 1 to be a valid path, resource given in /var/resources/classes/PHPExcel/Reader/Excel2007.php on line 81
PHP Fatal error: Uncaught exception 'PHPExcel_Reader_Exception' with message 'Could not open Resource id #15 for reading! File does not exist.' in /var/resources/classes/PHPExcel/Reader/Excel2007.php:82
Stack trace:
#0 /var/resources/classes/PHPExcel/IOFactory.php(280): PHPExcel_Reader_Excel2007->canRead(Resource id #15)
#1 /var/resources/classes/PHPExcel/IOFactory.php(191): PHPExcel_IOFactory::createReaderForFile(Resource id #15)
#2 /var/www/syncDB.php(113): PHPExcel_IOFactory::load(Resource id #15)
#3 {main}
thrown in /var/resources/classes/PHPExcel/Reader/Excel2007.php on line 82
我不想将.xls文件写入磁盘。我试图使用tmpfile(),但我仍然遇到同样的问题。 我的代码有问题吗?或者我不可避免地需要传递磁盘上文件的路径以便'PHPExcel_IOFactory :: load'才能使用?
在这里可能值得一提的是,'{3}}上的'Mark Baker'答案表明使用php:// memory应该是可能的。