如何在点击时调用php文件来处理上传的文件

时间:2019-06-07 09:07:32

标签: javascript php jquery

我是javascript和php的初学者,并且我一直在尝试寻求解决方案已有2天了,这可能很容易,但是我找不到任何解决方案。 所以,我有带文件输入和按钮的index.php文件,我希望当用户单击按钮时它执行一个js函数,该函数将调用excelparse.php文件来处理上传的文件,但是我不知道我可以在函数上调用excelparse.php文件。 如何在on.click函数上调用excelparse.php文件?

    //index.php
    <form>
<div class="form-group">
    <label for="ficheiro">Select a file</label>
    <input type="file" class="form-control-file" id="ficheiro">
</div>
<button type="button" id="parse" class="btn btn-light">Parse</button>
</form>

    //js.js
    parse.on("click", function() {

    });

    //excelparse.php
    $path_parts = pathinfo($_FILES["file"]["name"]);
    $extension = $path_parts['extension'];
    if ($extension == 'xls') {
        $extension = 'Xls';
    }
    elseif ($extension == 'xlsx') {
        $extension = 'Xlsx';
    }

    move_uploaded_file($_FILES['file']['tmp_name'],('files/tmp'));

    $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($extension);
    $spreadsheet = $reader->load("files/tmp");
    $sheet = $spreadsheet->getActiveSheet();        
    foreach ($sheet ->getRowIterator() as $row) {
        $cellIterator = $row ->getCellIterator();
        $cellIterator->setIterateOnlyExistingCells(false);
        $array = array();
        foreach ($cellIterator as $cell) {
            if (!is_null($cell)) {
                $value = $cell->getFormattedValue();
                $array[] = $value;                                        
            }                
        }
        print_r($array);
    }

1 个答案:

答案 0 :(得分:0)

您不能在HTML文件(如Javascript)中执行PHP命令。

PHP是一种服务器端语言,它将在服务器中执行并将响应推送到客户端。

您需要在JavaScript中使用AJAX来调用URL (your php file)(jQuery很简单)。

jQuery Ajax Request

一个简单的jQuery Ajax请求就像

    function callPhp() {

      $.ajax({
        url: "http://server.com/yourPhpFileUrl.php"
      }).done(function() {
         alert(0);
      });

   }

在您的代码中

您可以使用表单提交方法提交文件,

<form action='http://server.com/yourPhpFileUrl.php' method='post' enctype='multipart/form-data>

否则

您还可以使用AJAX请求发送文件

File upload using Ajax