Как отправить файл Excel как POST для обработки php-страницей - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть форма dijit, которая загружает файл Excel и отправляет его по почте в upload.php, который загружает данные этого файла в базу данных.У меня проблема в том, что файл не отправляется.Я работаю с dojo 1.10.

Я пробовал xhrPost и iframe, но не смог, и я не понимал, как это сделать и какой тип данных я должен отправлять (это текст ??).

<head>
        <link rel="stylesheet" href="./dojoroot/dijit/themes/claro/claro.css">
        <script>dojoConfig = {parseOnLoad: true}</script>
        <script src='./dojoroot/dojo/dojo.js'></script>
        <script>
            require(["dojo/parser", "dijit/form/Form", "dijit/form/Button", "dojox/form/Uploader", "dojox/form/uploader/plugins/IFrame","dojox/form/uploader/FileList", "dojo/request/iframe", "dojo/domReady!"]);
function sendForm(){
  var form = dojo.byId("uploadForm");

  dojo.connect(form, "onsubmit", function(event){
dojo.stopEvent(event);
var xhrArgs = {
      form: dojo.byId("uploadForm"),
      handleAs: "text",
      load: function(data){
        dojo.byId("response").innerHTML = "Form posted.";
      },
      error: function(error){
 dojo.byId("response").innerHTML = "Form posted.";
      }
    }
    dojo.byId("response").innerHTML = "Form being sent..."
    var deferred = dojo.xhrPost(xhrArgs);
  });
}
dojo.ready(sendForm);
        </script>

    </head>
<div data-dojo-type="dijit/form/Form" id="uploadForm" action="upload.php" method="post" name="upload_excel" enctype="multipart/form-data">
<div>
      <input data-dojo-type="dojox/form/Uploader" name="file" multiple="false" type="file" id="file" label="Browse" data-dojo-props="name:'file',showInput:'before',isDebug:true">
      <input type="submit" id="submit" label="Upload" name="Import" dojoType="dijit/form/Button" />
 <div id="files2" dojoType="dojox/form/uploader/FileList" uploaderId="file"></div>
</div>
</div>

В upload.php у меня есть это:

if(isset($_POST["Import"])){

    $filename = $_FILES["file"]["tmp_name"];
....

Я прочитал документацию по додзё, но не смог понять, как решить мою проблему.Я ценю вашу помощь.

1 Ответ

0 голосов
/ 13 апреля 2019

У вас есть ошибка внутри формы. Тег ввода с именем import на самом деле является кнопкой и не будет иметь значения при отправке на сервер. Так что isset($_POST["Import"]) вернет false.

Таким образом, удаление этой проверки сделает работу.

...