Silverlight FTP上传

3
我正在尝试通过Silverlight应用程序将文件上传到服务器的ftp。上传文件的位置在服务器文件系统的沙盒区域之外,即Web服务器根目录位于"C:\test\www\",而上传文件的位置将位于"C:\User\Uploads"。在这种情况下,我不确定Http POST是否有效(它不使用Web服务器根目录)。我只需要将用户选择的文件上传到可能存在于沙盒之外的不同位置。使用Silverlight,我认为套接字是基于Silverlight的受限端口范围4502-4532的最后选择。我能否使用WebClient和Http POST来完成此操作?我能否通过Silverlight或JavaScript建立FTP连接?

您没有指定服务器技术。 - AnthonyWJones
这个服务器技术使用的是apache 2.2。 - Curtis
你能否考虑澄清一下你的原始问题?例如,Silverlight本身不支持FTP上传,但通过HTTP数据流的方式可以实现文件上传的概念。另外,我也无法确定这些操作是否在同一台机器上进行。 - Jeff Wilcox
4个回答

2

这是一个有趣的场景,因为听起来你是在同一台机器上完成这一切(客户端和服务器都在同一台机器上)。我正在回答这个模糊的原始问题,并希望获得更多数据以完整地回答。

Silverlight本身不支持FTP上传,但可以通过HTTP数据流上传文件的概念来实现。

如果你想从客户端机器向服务器进行HTTP上传:你可以使用Silverlight 2或3中的OpenFileDialog控件读取数据,然后使用WebClient上传它们。

如果你想从你的网页服务器下载到客户机器,则需要使用Silverlight 3或更新版本,其中包含一个SaveFileDialog控件

所有Silverlight文件对话框都需要用户发起的操作才能工作和运行,用户将需要选择文件名称以提高安全性。

希望这能帮到你!


0
只要FTP服务器与Silverlight应用程序在同一主机上,您就可以使用套接字并编写自己的FTP客户端。这并不是很难,并且有很多示例可供参考。

2
Silverlight确实包含套接字支持。在使用Silverlight 3时,套接字的端口范围受限于4502-4534。这个范围对我正在实现的整体设计来说太过局限了。 - Curtis

0
假设您的服务器是基于ASP.NET的,我会使用一个简单的WebClient POST到一个.ashx处理程序。让处理程序将POST请求的正文写入到“C:\User\Uploads”文件中。

服务器是apache 2.2。您的建议将适用于asp.net,但想知道是否有另一种方法可以不使用asp.net。 - Curtis

0
同时,将其命名为Silverlight 5,套接字得到了更新:使用`ClientAccessPolicy.xml`,端口范围得到了提高,并且提供了一种浏览器内的升级信任模式。
因此,我创建了sharpLightFtp以启用基本FTP。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接