我和朋友一直在讨论通过互联网发送大文件的最佳方式。 FTP,单个Web服务,Chunking字节到多个Web服务,HTTP文件发布(多部分消息),RIA接口(SilverLight或Flash)。
是否缺少答案/解决方案?
让我告诉你更多我的具体情况。
我有一个.NET 2.0 Windows窗体“客户端”应用程序,它通过Web应用程序与ASP.NET应用程序进行交互。在客户端应用程序中,我需要能够上传大文件并将上载状态传达给用户。我正在做一个单独的Web服务,但发现文件大小在Internet上存在问题,因此创建了多个Web服务来块化字节数组。现在,想要考虑其他选择。
做了一些研究......
SilverLight文件上传 www.codeplex.com/SilverlightFileUpld
ASP.NET文件上传 www.brettle.com/neatupload
.NET Framework中的FTP www.windowsdevcenter.com/pub/a/windows/2006/12/12/building-ftp-services-using-net-20.html
想要别人的意见。感谢。
答案 0 :(得分:5)
我们遇到了这个问题,我们使用一个带有三个调用的Web服务解决方案,一个用于启动进程,第二个用于发送文件块,第三个用于结束进程,就像一个魅力。
答案 1 :(得分:0)
我自己偏爱Flash / Silverlight选项(通常是Silverlight,因为它与.NET完美集成。)这两个选项都提供了一个稳定,快速的机制来上传文件,这些文件不会挂起您正在处理的页面,允许用户在上传过程中执行其他任务(假设这些任务不会将其带到另一页)。
允许同时上传多个文件的基于Flash的上传服务的一个非常好的例子是DeviantArt.com的上传偏差页面。您可以选择要上传的文件,然后通过浏览器的任何工作在后台提交(在某些情况下,我认为创建隐藏的iframe,如果Flash不可用则提交文件请求),并且您获得一个文件图标,其中包含当前正在上传的每个文件的异步进度指示器。
Flash / Silverlight的另一个好处是,您可以在提交之前与客户端上的文件进行交互,从而允许您执行诸如验证数据不是恶意软件,脚本等的操作。这可能非常困难或者不可能使用经典文件上传和javascript,因为这些天通常存在于Web浏览器中的权限限制(有充分的理由。)
对于您的应用程序,我会说Silverlight将是与您的Web服务交互的最佳选择(我假设经典的ASMX服务,但如果它们是WCF,Silverlight也对WCF也有很好的支持。)
答案 2 :(得分:0)
有许多出色的Flash上传脚本,它们具有令人印象深刻的功能。
我最喜欢的是Solmetra Flash Uploader,online demo看起来令人印象深刻,您也可以将其设置为零宽度和高度,并在Javascript中编写脚本。
另一种选择是SWFUpload,它不那么华而不实,但可以根据您的需要更好地完成工作。它还有online demo。
即使是Gmail uses flash to upload attachments。