0

Excel_reader2.php を使用して、Excel をデータベースにインポートするアプリケーションを作成しています。Excelファイルをアップロードするためのフォームを作成し、アップロードしたいファイルが選択されたときに、Excelファイルのデータバウンドシートを読みたいです。jsを使用すると問題が発生し、phpコードで $ _FILES を解析できませんでした。

<script type="text/javascript">
function sheetChange()
{
    var html;
    $("#sheetName td").remove();
    var fileInputContent = $('#form').serializeArray();
    $.post(basedomain+"mycontroller/readSheet",fileInputContent,function(result)
    {
       if(result)
       {
          $("#sheetName").show();
          var data = JSON.parse(result);
          html += '<td>Sheet Name</td><td colspan=\'3\'><select name=\'SHEET\' required>';
          for(var i in data)
          {
             html += '<option value=\''+data[i]+'\'>'+data[i]+'</option>';
          }
          html +='</select></td>';
          $("#sheetName").append(html);
       }
     });
  }
</script>
<form id = 'form' method="post" action="upload.php" enctype="multipart/form-data">
    <table cellspacing="0" cellpadding="0">
       <tr>
           <td>Input Xls File</td>
           <td colspan="3"><input type="file" name="file" id="file" onchange="sheetChange()"/></td>
       </tr>
      <tr id="sheetName"></tr>
    </table>
</form>

phpコード:

public function readSheet()
{
    error_reporting(E_ALL ^ E_NOTICE);
    require_once 'excel_reader2.php';
    $data = new Spreadsheet_Excel_Reader($_FILES['file']['tmp_name']); //$_FILES is null

    foreach ($data->boundsheets as $k=>$sheet)
    {
        $row[] = $sheet['name'];
    }
    echo json_encode($row);
    exit;
}

誰でも私を助けることができますか?事前に感謝します。

4

1 に答える 1

1

その理由は、HTML を使用してファイルをアップロードすることは、思っているほど単純ではないからです。通常の POST (HTTP プロトコル) と multipart/form-data リクエストがどのように見えるかの 2 つの良い例を次に示します。

http://www.htmlcodetutorial.com/forms/form_enctype.html

ここから取り除かなければならないことは、フォームの送信と、ファイルのアップロードを伴うフォームの送信は、技術的には 2 つの非常に異なるものであるということです。

$.post は通常のフォーム送信のみを行うことができ、ファイルのアップロードは jQuery ではサポートされていません。

これを回避するには、次の 2 つの方法があります。

乾杯、マティアス

于 2014-12-04T07:01:48.100 に答える