最佳方法拖放上传.NET

时间:2011-11-19 06:15:18

标签: .net drag-and-drop

我一直试图找到一个可靠的解决方案,在使用.NET的Web应用程序上提供拖放上传部分。我已经尝试过使用Silverlight 4,但如果不使用浏览器,就不可能以这种方式使用此功能。

我已阅读这些文章

file upload via drag and drop

file upload using drag drop

但他们都提到http://www.plupload.com/这很酷,但我想开发自己的解决方案。

有人对方法有什么建议吗?你必须使用客户端技术来完成大部分工作,然后将数据发送到服务器,或者......好吧,我只是不确定。我意识到大多数人会选择使用其他人的解决方案或工具包......但是,嘿,那有什么好玩的? :)

1 个答案:

答案 0 :(得分:1)

最好的方法是使用Silverlight ..至少这是我发现的。转到this guys示例,然后分析他如何使用Web服务。我拿了这个,用WCF RIA服务取代了他所有的网络服务,而bam!..就像一个魅力。如果你搞砸了一段时间,你会发现有很多方法可以抛出FileSteam或Byte()来将它保存到磁盘上,如果你想......任何人,这是我对自己问题的回答。注意:要使SL拖放在Mac浏览器上工作,需要额外的编码(需要在JS中处理丢弃事件,而不是在SL中)。

如果HTML5是一个选项,使用新的JS'drop'事件也很有用。使用它的一个关键点是防止'dragover','dragenter'和& '滴'

function ConfigDropElement() {

    document.getElementById('dragarea').addEventListener("dragover", handleDragOver, false);

    document.getElementById('dragarea').addEventListener("dragenter", function (e) { e.preventDefault(); }, false);

    document.getElementById('dragarea').addEventListener("drop", function (event) {

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

        for (var i = 0; i < event.dataTransfer.files.length; i++) {

            var file = event.dataTransfer.files[i];

            var fi = new FileInfoElement();
            fi.WriteInfo(file.name);

            var reader = new FileReader();
            reader.readAsDataURL(file);

            var fi = new FileInfoElement();
            fi.WriteInfo(file.name);


        }



    }, false);

}