我一直试图找到一个可靠的解决方案,在使用.NET的Web应用程序上提供拖放上传部分。我已经尝试过使用Silverlight 4,但如果不使用浏览器,就不可能以这种方式使用此功能。
我已阅读这些文章
但他们都提到http://www.plupload.com/这很酷,但我想开发自己的解决方案。
有人对方法有什么建议吗?你必须使用客户端技术来完成大部分工作,然后将数据发送到服务器,或者......好吧,我只是不确定。我意识到大多数人会选择使用其他人的解决方案或工具包......但是,嘿,那有什么好玩的? :)
答案 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);
}