所以,我正在尝试将 xls 和 xlsx 文件上传到我的服务器(Yii 框架上的 NginX),它有一个 php 脚本来解析数据并将其添加到数据库中。
很简单。
但是,我在第一个街区绊倒了;上传文件时,PHPExcel 似乎找不到该文件 - 老实说,我不确定它是否存在,因为我无法深入了解它应该在哪里。下面是我的代码
<code>
<?php
spl_autoload_unregister(array('YiiBase','autoload'));
/** Include path **/
set_include_path(get_include_path() . PATH_SEPARATOR . '/usr/share/nginx/www/dashboard/protected/extensions/phpexcel/Classes/');
/** PHPExcel_IOFactory */
include 'PHPExcel/IOFactory.php';
spl_autoload_register(array('YiiBase','autoload'));
echo $_FILES . "<br />";
$inputFileName = $_POST;
foreach ($inputFileName as $key => $value) {
echo "Key: $key; Value: $value<br />\n";
}
echo $inputFileName["file"] . "<br />";
echo 'Loading file ',pathinfo($inputFileName["file"],PATHINFO_BASENAME),' using IOFactory to identify the format<br />';
//This is where it breaks
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName["file"]);
</code>
当它中断时,它会给我这个错误:
<code>
Could not open Active, Telemetered, Electricity Accounts 17-10-2012.xlsx for reading! File does not exist.
</code>
这个堆栈跟踪:
<code>
/**
225 * Can the current PHPExcel_Reader_IReader read the file?
226 *
227 * @param string $pFileName
228 * @return boolean
229 * @throws Exception
230 */
231 public function canRead($pFilename)
232 {
233 // Check if file exists
234 if (!file_exists($pFilename)) {
235 throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
236 }
237
238 // Check if zip class exists
239 if (!class_exists('ZipArchive',FALSE)) {
240 throw new Exception("ZipArchive library is not enabled");
241 }
</code>
现在,据我了解, pathinfo() 应该已经为 PHP 提供了查找文件所需的内容,并且一旦我点击上传按钮,该文件应该位于 php 的临时文件夹中(简单的 html 表单;我可以从 $ 获取文件名_POST,所以我知道它已经走了那么远),但要么它实际上没有上传,要么一旦它启动它就会丢失。
任何帮助深表感谢!
编辑:html上传表单:
<code>
<form action="testFile" method="post">
<label for="file" />
<input type="file" name="file" />
<br />
<input type="submit">
</form>
</code>
编辑:
html 上传表单有问题;因为我没有设置 enctype,所以 $_FILES 没有被填充。将编码设置为多部分/表单数据让我获得所需的信息。谢谢你们俩!