2010-03-01 182 views
4

我正在为此挠头。我的场景是我需要从我们的托管服务器(完全不同的服务器)上传文件到公司服务器计算机(到c上的文件夹)。我不知道我该怎么做。你们中的任何一个人都有关于如何完成的提示或代码。将文件上传到远程服务器,我应该如何?

谢谢你们

+0

您需要在目标服务器上运行某种文件传输服务,然后从客户端(从中移动文件的位置)连接到它。 SFTP(Secure Shell FTP)是一个不错的选择,尽管它不是开箱即用的。 – 2010-03-01 02:32:11

+0

Dejan - 感谢您选择我的答案为“答案” – 2010-03-01 12:56:39

回答

3

我需要建立一个FTP服务器(如一个在IIS或第三方服务器)公司服务器上。如果安全性问题,那么您将需要设置SFTP(安全FTP)而不是vanilla FTP,因为FTP不是本地安全的传输协议。然后在主机服务器上创建一个服务,以便在文件进入时使用C#/ .NET的FTP控制将其发送到公司服务器。老实说,它应该是非常简单的。

更新:阅读你的问题,我的强烈印象是你没有在公司服务器上运行的网站。也就是说,你做而不是需要在你的web应用程序中进行文件上传控制(或者已知如何实现一个控制权在网页工具箱中)。据我了解,您的问题是如何从网络服务器获取文件到公司服务器。

更新2:添加了关于安全性的备注。请注意,如果服务器位于同一个子域,并且不会路由到公司网络之外和/或数据不敏感,那么这一点就不那么重要了。起初我没有想到这一点,因为我现在正在这样一个项目上工作,但是我们的数据并不以任何方式敏感。

+0

你至少应该提到FTP是完全不安全的。 – 2010-03-01 02:34:23

+0

当(FTP)完全不安全时,FTP可以采用多种形式,包括通常也称为FTP的SFTP。虽然我不会在没有更多信息的情况下推荐FTP,但FTP可能是处理这种情况的完美适当方法。 – GrayWizardx 2010-03-01 02:40:43

+0

我已经更新了答案,马修。 – 2010-03-01 02:46:04

0

达伦·约翰斯通的文件上载控制是一个很好的解决方案,你会发现任何地方。它能够在不影响ASP.NET服务器内存的情况下处理大文件,并且可以显示文件上传进度,而不需要Flash或Silverlight依赖项。

http://darrenjohnstone.net/2008/07/15/aspnet-file-upload-module-version-2-beta-1/

+0

我不认为他正在寻找文件上传命令。我相信他希望将文件从Web服务器移到公司服务器(不运行Web应用程序)。 – 2010-03-01 02:35:14

+0

是的,我是更多的服务器到服务器交易。但thx无论如何罗伯特 – 2010-03-01 02:48:32

0

心不是足够的信息来告诉你整个托管方案,但我有可能让你在正确的方向开始了几点建议:

  • 是您的外部服务器由另一家公司或团体拥有的,你不能修改它?如果没有,您可以考虑在同一台机器上托管该进程,无论是在进程中,还是作为机器上的单独服务。如果不能修改,那么可以考虑在目标机器上托管服务,这样它就与文件需要显示的位置相同。
  • 文件是否需要与进程保持同步?即他们是否需要上传,移动和验证为单一操作?如果不是,那么单独的过程可能是最好的方法。单独的过程会给你一些灵活性,但记住它将是一个单独的过程和一组独立的代码来管理和使用
  • 正在上传的文件有多大?他们是否因上传而异?是纯文件,二进制文件(zip,可执行文件等)?如果文件很小,比起大文件有更多的选择。如果他们足够小,你甚至可以按顺序接通他们。

根据不同的答案,上述其中的一些可能会为你工作:

  • 使用MSMQ。这将适用于大约3MB以下的简单消息,没有太多麻烦。它的理想之处在于可以直接使用(例如XML)的消息。
  • 使用直接HTTP(s)中继。在主机上打开一个到目标机器的HTTP连接并传输文件。再次,这对于较小的文件会更好(即只有几KB,因为它将在内部完成)
  • 如果您有权访问主机,请在构建或收集文件和使用的计算机上部署单独的进程列出的任何方法将它们发送到目标机器。
  • 您可以在主机(如果您有权访问)或目标机器上使用SCP,FTP(任何形式的SFTP等)来托管传入文件并使用批处理来移动文件。这将有很多问题需要解决,例如文件大小,保持提交的同步和时间。视情况而定,我认为这是最后的手段。
  • 再次根据消息大小,还可以使用抽象层(如DB)充当两台机器之间的中间层。只要两台机器可以看到数据库(或其他存储位置)并且都可以对其执行操作,这将工作。 SQL Server Service Broker可以用于此目的(并且大多数其他DB产品提供类似的产品)。
  • 你可以看看其他产品,如WSO2 ESBNServiceBus,以促进两个应用程序之间的消息传递并进行内联。

希望这会给你一些看起来的起点。

相关问题