DropzoneJS:如何在上传成功后获得PHP响应?

Pat*_*ize 38 javascript php dropzone.js

我正在尝试在我的网站上实施Dropzone.我想听取"成功"事件,然后获取服务器响应,并在上传完成后将其中的一些信息添加到与DropZone相同的页面上的表单.

我想要在服务器响应中获得的信息是文件的直接链接.

dropzone的网站:http://www.dropzonejs.com/

我的项目网站:

http://37.34.62.131/test/
Run Code Online (Sandbox Code Playgroud)

所以我在我的项目的旧版本中完成了这个,但我无法弄清楚如何使用dropzone.js

工作实例:

http://37.34.62.131/test/uploader%201.0/
Run Code Online (Sandbox Code Playgroud)

我尝试做的是当一个文件上传后,我想让php响应回到同一页面上,下载链接如下所示.

我也可以发给你我的源代码,这样你就可以找自己了.

我希望在响应中看到我的PHP代码:

        print '<h2>Picture Uploaded Successfuly!!!!</h2> <p id="codes">

      <img src="'.$imgurl.'" height="300" alt="Uploaded Picture" >
        <label for="codebb">BBCode:</label>
        <input type="text" id="codebb" value="[URL='.$siteurl.'][IMG]'.$dlurl.'[/IMG][/URL]" onclick="javascript:this.focus();this.select();" readonly="true" /><br />
        <label for="codehtml">HTML Code: </label>
        <input type="text" id="codehtml" value=\'&lt;a href="'.$siteurl.'"&gt;&lt;img src="'.$dlurl.'" alt="'.$alt.'" /&gt;&lt/a&gt;\' onclick="javascript:this.focus();this.select();" readonly="true" /><br />
        <label for="codedirect">Direct Link:</label>
        <input type="text" id="codedirect" value="'.$dlurl.'" onclick="javascript:this.focus();this.select();" readonly="true" /></p>';
        echo ".$newname";
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我理解我所缺少的东西吗?

小智 73

看看你的网站,似乎你能够解决问题.

无论如何,这适用于可能仍在寻找的人.您需要使用两个参数添加函数成功.返回的第一个参数始终是文件,第二个参数是响应.样品:

Dropzone.autoDiscover = false;

$(function() {
        Dropzone.options.uiDZResume = {
            success: function(file, response){
                alert(response);
            }
        };
    });
Run Code Online (Sandbox Code Playgroud)

  • 我想知道为什么文档中没有提到它 (10认同)
  • 你救了我 :) (2认同)
  • 请记住,如果您正在加载多个文件,这将为每个文件调用一次!您必须使用:successmultiple: function(file.response){} (2认同)

Bra*_*lor 25

我有dropzone的一些问题,但我找到了这个解决方案:

new Dropzone("#myDropzone", { 
    maxFilesize: 2, // MB
    init: function() {
        this.on("success", function(file, responseText) {
            console.log(responseText);
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 第二个参数“responseText”现在始终未定义。 (2认同)
  • 噢,天啊,现在是时候找到一个真正有用的答案!++ (2认同)

Rei*_*.85 8

这个有问题的答案对我没有用.这样做:

$(".mydrop").dropzone({ 
    url: upload_url, 
    success : function(file, response){
        console.log(file);
        console.log(response);
    }
});
Run Code Online (Sandbox Code Playgroud)

而在PHP方面:

echo json_encode($whateverouwant);
die();
Run Code Online (Sandbox Code Playgroud)


raz*_*bee 5

以上都不适合我,但这......

<script>

    Dropzone.autoDiscover = false;
$(function(){

    uploader = new Dropzone(".dropzone",{
        url: "http://locahost/upload",
        paramName : "uploadedFiles",
        uploadMultiple :false,
        acceptedFiles : "image/*,video/*,audio/*",
        addRemoveLinks: true,
        forceFallback: false,
        maxFilesize:1000,
        parallelUploads: 100,

    });//end drop zone

  uploader.on("success", function(file,response) {
   console.log(response)
  });



});//end jq
</script>
Run Code Online (Sandbox Code Playgroud)


小智 5

请注意,分块上传存在问题,并且在成功时永远不会从服务器返回响应。在这种情况下,之前的所有答案都不起作用。解决方案可以是手动解析 XHR 响应,如下所示:

const galleryZone = new Dropzone(".dropzone-gallery", {
    url: your_upload_url_in_here,
    chunking: true,
    forceChunking: true,
    chunkSize: 2000000,
    success: (file, response) => {
        console.log(JSON.parse(file.xhr.response));
    }
});
Run Code Online (Sandbox Code Playgroud)

另外,您可以在此处的 Dropzone 存储库中检查问题https://gitlab.com/meno/dropzone/issues/51#note_47553173