javascript - 如何在 html javascript jquery 拖放事件(非 html5)上获取文件名

标签 javascript jquery html

当有人将一个或多个文件从本地计算机拖到 div 时,我正在尝试获取文件名。

目的是在不使用html5 Drag and Drop API的情况下通过拖放上传图片(以支持旧浏览器)。

当有人拖放一个(或多个)文件时,如何从 div 上的 jquery 放置事件中获取文件名?

最佳答案

我已经找到了很多关于如何在 html5 中执行此操作的信息,并且在浏览器调试器中搜索事件变量后,我能够准确地找到我正在寻找的内容。

我不得不说,考虑到我至少花了一个小时在网上寻找解决方案,这比我想象的要简单得多。

您需要做的是从 jquery 事件中获取“originalEvent”,该事件将具有 dataTransfer 属性。 dataTransfer 属性包含一个文件数组,您可以遍历这些文件(如果它们存在),并获取每个文件的名称属性(以及 lastModified、lastModifiedDate、大小和类型。

从 drop 中获取第一个文件的名称所需的代码是: e.originalEvent.dataTransfer.files[0].name

您可以通过以下方式获取文件数组的长度:

e.originalEvent.dataTransfer.files.length

举个例子,要遍历拖放到 dive 上的文件,您可以这样做:

for (var i = 0; i < e.originalEvent.dataTransfer.files.length; i++) {
    alert(e.originalEvent.dataTransfer.files[i].name);
}

为了触发“drop”事件,我需要“取消”div 的 dragover、dragenter 和 dragleave 事件(dragover 可能不必取消?)

这是我的解决方案:

html代码:

<div id="dropimagebox" class="noselect">Drop image here or click</div>

javascript代码:

function initDragAndDropDialog()
{           
    document.getElementById("imagedialog").showModal();

    $("#dialoginnerds").bind('clickoutside',function(){
            document.getElementById("imagedialog").close();
    });
    $("#dialoginnerds").on("dragover", function(e) {
        e.preventDefault();  
        e.stopPropagation();
        $("#dropimagebox").addClass('dragging');
    });
    $('#dialoginnerds').on('dragenter',function(e){
        e.preventDefault();
        e.stopPropagation();
        $("#dropimagebox").addClass('dragging');
    })
    $('#dialoginnerds').on('dragleave',function(e){
        e.preventDefault();
        e.stopPropagation();
        $("#dropimagebox").removeClass('dragging');
    })

    $("#dialoginnerds").on('drop', function (e) {
        e.preventDefault();
        alert(e.originalEvent.dataTransfer.files[0].name);
    });
}

关于javascript - 如何在 html javascript jquery 拖放事件(非 html5)上获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127350/

相关文章:

javascript - d3多折线图溢出

javascript - JQuery:选择仅包含 "&nbsp;"的段落

javascript - 在 Canvas 上生成线条无法按预期工作

css - 带图像的div内的div

java - JSP 的代码格式化程序?

javascript - AJAX Jquery 调用返回 401(未经授权)- API 调用

javascript - 页面预加载器陷入循环

jquery - 使用 jquery 获取考虑距离/家具的实时报价

javascript - 无法使用 jQuery 为边框颜色设置动画

javascript - 如何在自定义指令中使用 ngModel 指令的格式化程序/解析器?