Dropzone.js vdropzone-success()使用分块上传没有响应

时间:2017-12-26 18:14:19

标签: javascript vue.js dropzone.js

我在Vue中使用Dropzone.js。我正在尝试使用v-on:vdropzone-success挂钩服务器响应。如果uploadFile是单个块,那么一切都按预期工作但如果有多个块,则响应返回空。有人解决了这个问题吗?我错过了一些明显的东西吗谢谢!




 < dropzone ref =“myVueDropzone”
 id =“customdropzone”
 :选择= “dropzoneOptions” 
 V-上:vdropzone文件添加= “addFileTypeBorder” 
 V-上:vdropzone上传正在进行= “updateProgressBar” 
 V-上:vdropzone-除去文件= “removeFile” 
 V-上:vdropzone-成功= “addAnalysisId” 
 :包括定型= “假” >
 < /悬浮窗>
  




功能:




 <代码> addAnalysisId:功能(文件,响应){&#xA; console.log(响应)&#xA; },&#xA;  
&#xA;&#xA;

以下是检查器中服务器响应的样子。每个块都作为单独的请求提交。显示最终请求。所有其他块响应块#。 &#xA; 检查员形象

&#xA;

2 个答案:

答案 0 :(得分:1)

我看到这是一个老话题,但是我碰到这里寻找答案。 因此,在库源代码中查找成功时不会返回第二个参数。仅文件的一个实例。

我发现在返回的对象中有一个xhr属性。在这里,您可以找到服务器的响应。因此,在您的情况下:

addAnalysisId: function(file){
        console.log(file.xhr.response); 
    },

然后您可以根据需要解析响应并使用它。

答案 1 :(得分:0)

要检查块的响应,应将此代码添加到dropzone.js中: (搜索“ 200”,您会发现)

if (!(200 <= xhr.status && xhr.status < 300)) {
                this._handleUploadError(files, xhr, response);
            } else {
                if (files[0].upload.chunked) {
                    files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr));
                } else {
                    this._finished(files, response, e);
                }
            }

至:

if (!(200 <= xhr.status && xhr.status < 300)) {
                this._handleUploadError(files, xhr, response);
            } else {
                //check response
                var status=JSON.parse(response)['status'];
                if(status==='error'){
                    this._handleUploadError(files, xhr, response);
                } else {
                    if (files[0].upload.chunked) {
                        files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr));
                    } else {
                        this._finished(files, response, e);
                    }
                }
            }

_handleUploadError将再次上传失败的块。