【问题标题】:Send additional data with dropzone to the backend使用 dropzone 向后端发送附加数据
【发布时间】:2015-09-25 09:18:27
【问题描述】:

我正在尝试通过 dropzone 将图像文件的特定 - 已经知道 - 位置 ID 发送到后端,该 ID 将上传到服务器上。 虽然使用了formData.append(),但我看到没有附加任何内容。而只是显示了这个“FormData {}”。

dropzoneObject.on("sending", function(file, xhr, formData){
    var nameOfFile = $(file.previewElement).find(".dz-filename").text();
    var positionOfFile = fpos;
    //console.log("The file who's being sent is named: "+nameOfFile+" and its position id is: "+positionOfFile);
    formData.append("fpos", fpos);
});

我希望在示例中看到 fpos=16;

【问题讨论】:

  • 我看不出有什么问题,它应该出现在服务器端,每个php中的示例应该出现在$_POST中。
  • 我也一样,但是我看看它发送到后端的内容是这样的: ------WebKitFormBoundaryQ1oUGxyQMqHxtZLB Content-Disposition: form-data;名称=“动机[14]”; filename="sPYaY6Tb_w.jpg" 内容类型:图像/jpeg。虽然有data-form要发送,但不是:/我真的需要找到一种方法将位置ID推送到后端。 @wallek876

标签: php jquery ajax xmlhttprequest dropzone.js


【解决方案1】:

不知道您的具体错误,但这里有一个简单的示例,说明如何使用 jQuery 使用 dropzone 发送附加数据并在后端使用 php 接收它。

html:

<form id="myForm" class="dropzone"></form>

js:

Dropzone.autoDiscover = false;
$('.dropzone').dropzone ({
        url: "upload.php",
        init: function() {
            this.on("sending", function(file, xhr, formData){
                formData.append("fpos", 777)
            }),
            this.on("success", function(file, xhr){
                alert(file.xhr.response);
            })
        },
});

成功事件只是为了演示如何访问服务器发送的响应:

php:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') 
    {
        echo "RECEIVED ON SERVER: \n";
        echo "FILES: \n";
        print_r($_FILES);
        echo "\$_POST: \n";
        print_r($_POST);
    }

php 只是将接收到的相同数据发送回客户端,只是为了显示可访问的位置。

【讨论】:

  • 非常感谢。显然,数据表单总是在发送信息,但它不会出现在发布请求中。我没有想到要检查后端是否收到它,因为我认为它不存在,因为我没有看到它。你是救生员。
  • 如果启用了 uploadMultiple 标志,这将一次又一次地将值附加到同一个键。
  • @SumitJoshi 我不这么认为,如果启用了uploadMultiple,dropzone 会在一个请求中将队列中的文件与表单数据一起发送。也就是说,如果队列中的文件数大于选项parallelUploads 指定的文件限制,dropzone 将分批发送文件,最多包含parallelUploads 中指定的文件数,例如如果有 5 个队列中的文件,parallelUploads 为 2,dropzone 将分 3 个请求发送文件,每个请求包含相同的表单数据,因此您将发送相同的表单数据 3 次。
猜你喜欢
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多