如何从多阵列中删除文件详细信息

Posted

技术标签:

【中文标题】如何从多阵列中删除文件详细信息【英文标题】:how to remove file details from multi array 【发布时间】:2014-08-02 07:18:10 【问题描述】:

我在 div 中显示所有文件,该 div 以数组 upfiles 的形式出现。在 jquery 中使用每个显示所有带有删除按钮的文件,当我单击删除按钮时,应从数组中删除相应的文件详细信息。

这是每个循环的 jquery 代码,我试图从数组中删除文件详细信息

var int_loop =  1;
        var display_removebutton="";
    $(upfiles).each(function(index, file) 
        
            if(total_size > 1000) // size limit comparision
                 display_removebutton = "<img width='20px' style='cursor:pointer;' height='20px' id='remove_"+int_loop+"' src='images/DeleteRed.png' />"
            size = Math.round( file.size / 1024 );
            if(size > 1000)
            
                if(size > 1024) 
                    size_display =  Math.round(size / 1024 * 100)/100 + ' mb';
                else
                    size_display = size + ' kb';    
                alert(file.name+"("+size+")"+" will be removed atomatically from list. As it exceeds limit.");
            
            if(size > 1024) 
                    size_display =  Math.round(size / 1024 * 100)/100 + ' mb'; // converted to mb
            else
                    size_display = size + ' kb';    
            $('#total').append("<div id='div_selec"+int_loop+"'><b>File Name :</b> "+file.name + "<b> Size:</b>" + size_display + display_removebutton + "</div>" ); 
            $("#remove_"+int_loop).click(function() 

                var curr_id = this.id;
                var id = curr_id.substr(7);
                alert(id+'file name '+file.name);
               $("#div_selec"+id).empty();
                   upfiles.splice(index, 1) //updated as the suggested in comment
//                    delete upfiles[id];
                alert(upfiles.length);

            );
             int_loop++;
    );

编辑 1:

实际上我在 jquery php 中实现了拖放文件上传。在验证是否所有文件的总大小大于 1000kb 时显示删除按钮,用户必须删除一些文件

编辑 2:

我在控制台日志中收到此错误:TypeError: upfiles.splice is not a function

编辑 3:

upfiles 来自这个 jquery drop 事件:

$( '#total' ).bind( 'drop',function(event) 

        event.stopPropagation();    
        event.preventDefault();

        if( upfiles == 0 )
                
                upfiles = event.originalEvent.dataTransfer.files;

                                console.log(upfiles); // in this console log it is displaying `FileList [File, File, File, File, File, File, File]` File is nothing but the files which i have dropped in a div
                
        else 
            if(confirm( "Drop: Do you want to clear files selected already?" ) == true) 
                upfiles = event.originalEvent.dataTransfer.files;
                $( '#fileToUpload' ).val('');
            
            else
                return;
        
        $( "#fileToUpload" ).trigger( 'change' );
);

【问题讨论】:

请为此发布一个小提琴。 因为这是代码的中间部分,我该如何在小提琴中发布。我只是展示了我被绞死的那部分代码。 这个问题怎么这么多赞,一团糟? @Nit ,因为它符合堆栈溢出标准 有人能理解我的问题吗?你们清楚吗? 【参考方案1】:

splice 没有定义,因为upfilesFileList 类型,而FileList 的原型没有定义它。但是,您可以使用var array = Array.prototype.slice.call(arrayLikeObject, 0) 将任何类似数组的对象转换 为数组。现在array 拥有splice 和所有其他数组方法。有关简短示例,请参阅 http://jsfiddle.net/8e2s7/1/。

【讨论】:

jasd 删除文件有问题 如果有新问题,请提出新问题。您可以在聊天中分享链接吗?! 对问题进行了排序。现在我正在实现另一个功能【参考方案2】:

您是否正确使用 .splice?您将起始索引设置为“0”,并且它作用于文件(可能而不是 upfile?),这意味着它将删除数组开头的项目。

MDN .splice function

一个 jsFiddle 会很有帮助。

【讨论】:

因为这是拖放上传功能,我怎么能把它放在 jsfiddle 中。请建议 我不太确定你的意思?您只需将源代码复制并粘贴到 jsfiddle 中即可。

以上是关于如何从多阵列中删除文件详细信息的主要内容,如果未能解决你的问题,请参考以下文章

如何从表格中删除标题和详细信息占位符标签及其行?

如何让用户只删除他们的详细信息而没有其他人的php

如何删除word文件属性中的摘要信息

如何从 SwiftUI 的详细信息视图(编辑项目视图)中删除核心数据条目?

获取用户在 EJS 中选择的表详细信息?

如何在文本文件中搜索员工记录(按姓名)并仅显示其详细信息?