2010-12-11 33 views
0

如何從ASP.NET Web應用程序的任何網絡服務器(Linux)的文件上傳..如何上傳文件

+1

能否請你澄清?你的意思是從瀏覽器上傳文件到你的服務器的ASP.NET應用程序(運行在linux服務器上),還是你想從一臺服務器(運行你的ASP.NET應用程序)上傳一個文件到另一臺服務器(運行。 ..someting,在Linux下)? – 2010-12-11 14:49:02

+0

我想從一臺服務器(運行我的ASP.NET應用程序)上傳文件到另一臺運行在linux下的服務器.. – kenom 2010-12-11 14:56:44

回答

0

如果有問題的Linux服務器訪問,在.NET中暴露了一個FTP服務,然後here's a tutorial。如果FTP不是一個選項,那麼請指定Linux服務器公開的文件上傳服務(Samba,NFS等)。

+0

你有沒有在c#中的例子? – kenom 2010-12-11 15:05:44

+0

@kenom:該教程中的代碼可以很容易地轉換爲C#似乎並沒有使用我注意到的任何僅限VB的構造。如果你需要,你可能會在網上找到一個VB.NET到C#的轉換器。如果沒有,只需在VB中進行編譯並使用Reflector將其反彙編到C#中。但是,老實說,這都是過度的。代碼並不複雜。 – David 2010-12-11 15:08:26

1

採取這些步驟作爲一般準則:

  • 包括用戶的ASP.NET服務器控件上載的文件
  • 有其SaveAs路徑是UNC path到遠程服務器上的共享。

以下是關於FileUpload ASP.NET Server Control at MSDN的更多信息。

<asp:FileUpload ID="FileUpload1" runat="server" /> 

if (FileUpload1.HasFile) 
{ 
    FileUpload1.SaveAs(@"\\server2\SomeShare\" + FileUpload1.FileName); 
} 

如果你想要的文件,先保存在您的ASP.NET框:

  • 文件保存到本地(類似c:\uploads\temp或什麼都有,你
  • 在某個間隔或您選擇的事件中,將該臨時目錄中的所有文件從server1移動到server2。
  • use System.IO.File.Move
string[] files = System.IO.Directory.GetFiles(@"c:\uploads\temp"); 

foreach (string s in files) 
{ 
    string fileName = System.IO.Path.GetFileName(s); 
    string destFile = System.IO.Path.Combine(targetPath, fileName); 
    System.IO.File.Copy(s, destFile); 
}