我安装了 PHPOffice/PHPSpreadsheet 插件并尝试读取 excel 文件(xls、xlsx)。如果您将文件扔到服务器上并读取它,那么一切都很好,它的内容使用 echo 显示。但是如果我使用 POST 方法发送这个文件,那么它就来了,但它的内容不显示。虽然如果你完全剪切文件,并留下大约 10 行,那么在传输之后它的内容就会显示出来。
reactJS 的前端。这是文件上传代码:
addFileSubmit() {
var data = new FormData();
data.append('act', 'INPUTFILEROLL');
data.append('connectid', cookies.get('connectid'));
data.append('token', cookies.get('token'));
data.append('file', this.state.file_data);
$.ajax({
url: 'http://****/***.php',
type: 'POST',
dataType: 'json',
data: data,
processData: false,
contentType: false,
success: function (data) {
this.setState({
datauploaded: true,
response: 'gespeichert',
error: 1
});
}.bind(this),
});
}
这是处理接收到的文件的代码部分:
var_dump($_FILES);
$fname = $_FILES['file']['name'];
echo 'NAME: ' . $fname;
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($fname);
$sheet = $spreadsheet->getActiveSheet();
$rows = $sheet->toArray();
foreach ($rows AS $r) {
echo '-----------------------------------------------<br/>';
foreach ($r AS $c) {
echo '[' . $c . ']';
}
echo '<br/>';
}
为什么使用POST方式传输文件时,行数较多的文件没有被处理,而直接从服务器读取,则读取正常。
$_FILES['file']['name']
尝试改用$_FILES['file']["tmp_name"]
.