ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – $_FILES使用DropzoneJS和Symfony 1.4返回空

2019-07-11 11:29:50  阅读:322  来源: 互联网

标签:php javascript upload dropzone-js symfony-1-4


我已经在网上浏览了几篇SO和博客文章,但找不到有用的东西.

我正在尝试设置一个简单的HTML拖放表单,用户可以通过DropzoneJS一次上传多个文件.

HTML:

<form action='<?php echo url_for("@menu_basic_menu"); ?>' method="post" enctype="multipart/form-data" class="dropzone" id="basic_menu_dropzone"></form>

<button id="file_submit_btn" type="submit" form='basic_menu_dropzone' value="submit">SUBMIT</button>

使用Javascript:

jQuery(document).ready(function($) {
    Dropzone.autoDiscover = false;

    var dropzone = new Dropzone('#basic_menu_dropzone', {
        paramName: 'files',
        addRemoveLinks: true,
        uploadMultiple: true,
        autoProcessQueue: false,
    });

    $('#file_submit_btn').click(function() {
        dropzone.processQueue();
    });
});

在这里您会注意到我还设置了一个提交按钮,以便我们只在提交时启动文件的上传过程

PHP(actions.class.php片段):

public function executeBasicMenu(sfWebRequest $request) {
    if ($request->isMethod('post')) {
        print_r_tree($_FILES);
    }
  }

我有一切设置,以便在提交时正确触发executeBasicMenu,但$_FILES总是返回一个空数组.

笔记:

>如果我用常规输入类型=’文件’标签替换dropzone表单,那么一切正常,所以我的直觉就是告诉我我的配置dropzone在某处是错误的.
>我已经逐步完成了dropzone.js源代码,当它即将在1386行发送数据时它看起来是正确的:xhr.send(formData),
formData为空.

任何帮助深表感谢!

解决方法:

终于找到了我的错误!

在我的代码中,我在单击按钮上提交表单:

<button id="file_submit_btn" type="submit" form='basic_menu_dropzone' value="submit">SUBMIT</button>

但我也试图在同一个按钮点击上调用processQueue().
但是,表单将在文件发送之前提交,因此PHP端不会收到任何文件.

我也错误地实例化了我的dropzone实例 – 我应该包含一个parallelUploads字段,以便我可以一次上传多个文件.

因此,使用我新的更新代码,一切都按预期工作,我可以在PHP端处理我的文件!

HTML

<form action='<?php echo url_for("@menu_basic_menu"); ?>'method="post" enctype="multipart/form-data" class="dropzone" id="basic_menu_dropzone"></form>
<button id="file_submit_btn" type="button" form='basic_menu_dropzone' value="submit">SUBMIT</button>

JS

jQuery(document).ready(function($) {
    Dropzone.autoDiscover = false;

    var dropzone = new Dropzone('#basic_menu_dropzone', {
        paramName: 'files',
        addRemoveLinks: true,
        uploadMultiple: true,
        autoProcessQueue: false,
        parallelUploads: 10
    });

    $('#file_submit_btn').click(function() {
        dropzone.processQueue();
    });
});

PHP

public function executeBasicMenu(sfWebRequest $request) {
    foreach($_FILES['files']['name'] as $index => $tmpName) {
      error_log($tmpName);
    }
}

希望这也有助于其他人!

标签:php,javascript,upload,dropzone-js,symfony-1-4
来源: https://codeday.me/bug/20190711/1431634.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有