【问题标题】:How to send excel file as POST to be handled by a php page如何将excel文件作为POST发送以由php页面处理
【发布时间】:2019-09-02 04:18:25
【问题描述】:

我有一个 dijit 表单,它上传一个 excel 文件并通过 post 将其发送到 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"];
....

我阅读了 dojo 文档,但我不明白如何解决我的问题。感谢您的帮助。

【问题讨论】:

    标签: database post dojo uploader


    【解决方案1】:

    表单中有错误。名称为import 的输入标签实际上是一个按钮,当您将其发送到服务器时不会有值。所以isset($_POST["Import"]) 将返回 false。

    因此删除此检查即可完成工作。

    【讨论】:

    • 感谢您的回答。但是,输入标签是一个提交按钮。即使删除您提到的支票,它也不起作用。在 firebug 上调试时,出现以下错误:解析服务器结果时出错:SyntaxError:“JSON.parse:JSON 数据的第 1 行第 5 列的数据意外结束”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多