1

我正在使用dropzone js插件将文件上传到 php 服务器。它工作得很好。我正在帮助用户更新上传的文件。因此,一旦用户单击更新按钮,就会出现 dropzone,我可以通过JQuery-AJAX调用在其中显示上传的文件。但我的问题是,虽然文件以缩略图格式显示,但 dropzone 中的文件数为零。我觉得没有触发接受功能。但是如果将新文件添加到显示列表中,则文件计数为 1,尽管其中已经存在文件。

我正在使用以下代码在 dropzone 中显示文件:

var mockFile = { name: "Filename", size: 12345 };
myDropzone.options.addedfile.call(myDropzone, mockFile); 
myDropzone.options.thumbnail.call(myDropzone, mockFile, "/image/url");

谁能帮我解决这个问题?

4

3 回答 3

3

我认为您需要像这样手动将 mockFile 推送到 dropZone

myDropzone.emit("addedfile", mockFile);
myDropzone.emit("complete", mockFile);
myDropzone.files.push(mockFile);

这对我有用...如果您需要更多代码,请询问!

于 2015-04-21T18:52:15.653 回答
0

你的例子!

jQuery(function($) {
    //文件上传
    $(".dropzone").dropzone({
        url : "pic_upload.jsp?id=<%=request.getParameter("id")%>",
        addRemoveLinks : true,
        dictRemoveLinks : "x",
        dictCancelUpload : "x",
        maxFiles : 5,
        maxFilesize : 5,
        acceptedFiles: "image/*",

        init : function() {     
            //上传成功处理函数
            this.on("success", function(file) {
                alert("修改前:"+file.name);

            });

            this.on("removedfile", function(file) {
                alert("File " + file.name + "removed");
                //ajax删除数据库的文件信息
                $.ajax({    
                    type:'post',        
                    url:'pic_delete.jsp?id='+file.name ,   
                    cache:false,      
                    success:function(data){

                    }    
                });
            });


            <%
            if(null!=list){
                for(PlaceImg img:list){%>
                //add already store files on server
                var mockFile = { name: "<%=img.getId()%>", size: <%=img.getFilesize()%> };

                // Call the default addedfile event handler
                this.emit("addedfile", mockFile);

                // And optionally show the thumbnail of the file:
                this.emit("thumbnail", mockFile, "<%=img.getImgUrl()%>");
                <%}
                }%>

        }
    });
于 2014-11-13T06:16:29.733 回答
0

模拟文件未按此处的说明上传https://github.com/enyo/dropzone/issues/418

如果您想提交表单myDropzone.uploadFiles([]);,请使用init()

$('input[type="submit"]').on("click", function (e) {

                e.preventDefault();
                e.stopPropagation();

                var form = $(this).closest('#dropzone-form');
                if (form.valid() == true) { //trigger ASP.NET MVC validation
                    if (myDropzone.getQueuedFiles().length > 0) {
                        myDropzone.processQueue();  
                    } else {                       
                        myDropzone.uploadFiles([]);
                    }                                    
                }               
            });
于 2013-12-16T20:43:55.493 回答