从HTML上传(未读取).xlsx文件,并将其(以任何方式发送)到PHP文件

时间:2019-06-15 19:43:33

标签: javascript php html

我有一个.xlsx文件和一个带有的html文件。我只需要上传它并将其发送到php文件(使用js或任何其他方式)即可。

如果我直接将其加载到php文件中,则该php文件需要一个.xlsx文件(由于这个原因,我不解析.xlsx。)可以正常工作,但我需要通过用户界面上传,在这种情况下是html视图。

致谢。

更新

.html现在看起来像这样:

<div class="MainContainerPrice">
    <form action="php/excel_to_mysql.php" method="POST">
        <input type="file" name="excel" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
        <input type="submit">
    </form>
</div>

.php看起来像这样:

<?php 

  include 'simplexlsx.class.php';
  $file = $_FILES['excel'];
  $xlsx = new SimpleXLSX('pricesExcel.xlsx'); //the file directly uploaded that I need to send from html.
  ...

?>

但是现在我遇到下一个错误:

未定义索引:第2行中... \ excel_to_mysql.php中的excel。

为什么不识别名字?

1 个答案:

答案 0 :(得分:1)

您需要在html和PHP部分进行一些调整

<div class="MainContainerPrice">
    <form action="php/excel_to_mysql.php" method="POST" enctype="multipart/form-data">
        <input type="file" name="excel" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
        <input type="submit">
    </form>
</div>

请注意enctype="multipart/form-data"。实际发送文件是必需的。

PHP文件中的

<?php 

  include 'simplexlsx.class.php';
  $file = $_FILES['excel']['tmp_name'];
  $xlsx = new SimpleXLSX($file); //the file directly uploaded that I need to send from html.
  ...

?>

$_FILES['excel']['tmp_name']包含上载文件的完整路径,请注意,您不能依赖扩展名为'.xlsx'的文件,因为该文件出于安全目的会使用随机名称。

强烈建议您使用临时目录中的文件,并在使用后将其删除。

如果SimpleXLSX类需要使用'.xlsx'扩展名才能正常工作,则可以尝试将其添加到临时文件中

rename($_FILES['excel']['tmp_name'],$_FILES['excel']['tmp_name'].'.xlsx');