上传的 Excel 文件 tmp_name 有时只是空的
Posted
技术标签:
【中文标题】上传的 Excel 文件 tmp_name 有时只是空的【英文标题】:Uploaded Excel files tmp_name is only empty sometimes 【发布时间】:2022-01-07 04:08:36 【问题描述】:所以我在我的上传功能中发现了一个错误,我已经使用了一段时间了。但是今天当我上传一个带有一些tables etc. in notes
的excel 文件时,tmp_name
是空的。该文件只有 2.3kB,当我尝试使用大小为 11kB 的旧文件时,它可以完美运行。
我尝试打印数组,结果如下:
Array ( [xml_file] => Array ( [name] => export_test.xlsx [type] => [tmp_name] => [error] => 1 [size] => 0 ) )
带有notes
或类似内容的格式化单元格可以使其无法上传吗?
当我上传 11kB 文件时,我得到以下信息,这是正确的:
Array ( [xml_file] => Array ( [name] => export (3).xlsx [type] => application/vnd.openxmlformats-officedocument.spreadsheetml.sheet [tmp_name] => C:\xampp\tmp\php39F3.tmp [error] => 0 [size] => 53226 ) )
我使用的 html/PHP 表单是这样的:
<form name="form" style="display: inline-block; width: 80%;" method="post" action="../Test/DashboardFiles/upload.php" enctype="multipart/form-data">
<div class="input-group">
<div class="custom-file">
<input type="file" name="xml_file" accept=".xl*" class="btn custom-file-input" id="f02">
<label class="custom-file-label" for="f02">Choose file</label>
</div>
<div class="input-group-append">
<input style="border-radius: .35rem !important;" class="btn btn-outline-secondary formClickResetUrl" id="uploadRVTM" type="submit" name="submit" value="Upload" disabled/>
<input type="hidden" name="project" value="
<?php
if (isset($_GET['Project']))
echo $_GET['Project'][0];
else
echo $FirstItemDD[0][0];
?>
">
<script>
typefile();
</script>
</div>
</div>
</form>
在 upload.php 中,如果文件存在,我会移动文件等。但我们只是说它只包含 print_r($_FILES);
临时文件保存在C:\xampp\tmp
中,在我的php.ini
中更改,最大上传大小为upload_max_filesize=2M
【问题讨论】:
[error] => 1
表示UPLOAD_ERR_INI_SIZE
- “上传的文件超过了 php.ini 中的 upload_max_filesize 指令。” php.net/manual/en/features.file-upload.errors.php PHP 不太可能对此撒谎。
“带有注释或类似内容的格式化单元格可以使其无法上传吗?” - 不是本身;但如果这些单元格中的数据量(分别是实际发送的数据),加上上传文件大小,达到post_max_size
,那么整个请求也不会成功。跨度>
@CBroe 有趣的是,当我保存与2003
相同的文件时,some feature might be lost....
我仍然尝试过,现在它也可以上传该文件了。哪个功能阻止它上传我不知道.. post_max_size = post_max_size=8M
Excel 文件中包含的任何“功能”都不会对上传部分本身产生任何影响(除非您运行某种服务器防火墙,它会检查 POST 正文并查找“恶意” 东西。)
@CBroe 这不是由于防火墙,尝试将其关闭但仍然出现错误。但是我尝试增加upload_max_filesize to 12M
,现在它可以工作了。但这也很有意义……我的文件是 2300kB 而不是 2.3kB。我不知道的一件事是为什么我的 11000kB 文件可以上传?` 你建议upload_max_filesize
大小是多少?
【参考方案1】:
为了保护您的服务器资源,主机对可以上传的文件的最大大小设置了限制。此最大值(以 MB 为单位)在 upload_max_filesize
指令中定义。
将upload_max_filesize=2M
更改为upload_max_filesize=15M
在php.ini
中更改此设置
【讨论】:
以上是关于上传的 Excel 文件 tmp_name 有时只是空的的主要内容,如果未能解决你的问题,请参考以下文章
php5.4 文件上传问题 5.4以前 $_FILE['file']['tmp_name'] 存储的是历史文件 5.4怎么是tem/phpXXXX了