wpf上传文件到服务器

问题描述:

我正在开发一个wpf应用程序,它可以与wcf通信到db。一个要求是上传文件,并为它们编制索引以供以后检索。在不重新发明*的情况下做到这一点的最佳方法是什么。我担心这个恐惧超时使用wcf。解决方案需要位于后台线程中,允许我跟踪进度,重试或继续失败,并加密。我找不到像我在Silverlight/asp.netwpf上传文件到服务器

的文件上传控制或者我应该b集成到一个dms?

你可以使用Asp.Net WebApi的那种东西。使用diffirent工具没什么不好。您可以在任何应用程序中托管它,并且它会简单的http上传。

Serverside集团代码示例:Uploading large files using ASP.NET Web API and Azure Blob Storage

+0

但我没有使用Azure ....或者这只是为了显示asp.net端? – Crudler

+0

只是为了表明asp.net在里面,所以,一般来说,你的上传代码是一样的。甚至相同,如果你想自己的WebApi没有IIS =) –

尝试System.Net.WebClient.Upload

+0

似乎这是要走的路线。我是否还需要编写一个asp.net页面来接收文件? TX – Crudler

MS SQL Server的FILESTREAM是用于存储文件,因为这些文件是由SQL(存储它们,文件名(保证唯一性),等)管理,但仍然在幕后,它们被存储在文件系统和漂亮实际上不在数据库中(膨胀你的数据库)。您的代码将它们视为BLOB,但它们实际上是文件。

WCF可以处理传输任何通用的stream of large data。您的操作合约(WCF的Web方法名称)有一些限制条件可以使其运作。虽然,这种方法没有一个好的方式来报告传输进度(我知道的)。如果这不符合您的需要,您可以随时使用其他提交的解决方案或FTP。

也检查WCF的传输安全性进行加密。

你将不得不在你自己的后台线程中管理这个。对于在后台工作的线程,可以看到BackgroundWorker,可以向UI线程报告进度(非常重要),当线程完成时,它会提供一个方法,再次向UI线程报告。不管你选择什么方法,你将不得不处理超时,所以如果它是WCF,FTP,WebClient.Upload等,你仍然需要处理相同的问题,但方式稍有不同。至少在WCF中,超时时间是在您的应用程序配置文件中配置的,因此您可以轻松调整时间。