【问题标题】:Enable drag and drop upload in div container在 div 容器中启用拖放上传
【发布时间】:2013-08-12 14:42:00
【问题描述】:

我确定有几个问题与此类似,但我不知道要搜索什么。

我正在寻找一种在我的网站上启用拖放到 div 的方法。目前,当我将文件放入页面(我正在使用 Chrome)时,它会显示不是我想要的文件(文件:// url)。如果有办法在不使用任何插件的情况下做到这一点,我会更高兴。它应该支持多个文件。

这就是我的 div-css 的样子:

#dnd {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    bottom: 0;  
}

这是我用于拖动的 jQuery 绑定:

function processFileUpload(droppedFiles)
{
    var uploadFormData = new FormData($("#dnd")[0]); 
    if(droppedFiles.length > 0)
    {
        for(f = 0; f < droppedFiles.length; f++)
        {
            uploadFormData.append("upload[]",droppedFiles[f]);
        }
    }

    $.ajax({
        url : "index.php",
        type : "POST",
        data : uploadFormData,
        cache : false,
        contentType : false,
        processData : false
    });
}

$("#dnd").bind("dragenter", function() {
    $(this).css("background", "#8c8c8c");
    return false;
});

$("#dnd").bind("dragleave", function() {
    $(this).css("background", "#c9c9c9");
    return false;
});

$("#dnd").bind("drop", function(e) {
    files = e.dataTransfer.files;
    processFileUpload(files);
    return false;
});

感谢所有 cmets 和答案。谢谢!

【问题讨论】:

  • @Dagon 感谢您的评论,但我有自己的 PHP 上传脚本工作正常(在拖放的同一页面上有一个按钮)。我只需要弄清楚如何使 div 允许拖放。
  • 尝试将 e.stopPropagation();e.preventDefault(); 添加到您的 drop 回调中。
  • @MetodMedja 没有做任何事情。不过感谢您的评论!

标签: php jquery html drag-and-drop


【解决方案1】:

看起来必须取消 dragover 事件才能触发 drop 事件。
要修复它,只需添加以下内容:

$("#dnd").bind('dragover', function() {
    return false;
});

这是我按照您的代码制作的一个工作示例: http://jsfiddle.net/hmf4T/
您可以在控制台输出中看到文件。

【讨论】:

  • 小提琴按你说的那样工作,但在我将它实施到我的网站后它就不起作用了。我错过了什么吗? bonecountyroleplay.com/switchbox
  • 只需要在你的脚本前包含 jQuery 并将 function upload 更改为 function processFileUpload
  • 糟糕,谢谢。虽然它仍然把我带到文件的 file:// url。
  • 好的,我复制了您的代码并找到了解决方案。在第 32 行将 if(file.length &gt; 0) 更改为 if(files.length &gt; 0)(对不起,我的错)并在 $('#dnd').bind('drop', function() { 之后添加 event.preventDefault();return false; 这次不会删了。
  • 工作!非常感谢你的帮助。真的很感激。
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多