如何: 傳送和接收藉由使用 ASP.NET Web 服務和 Visual C#.NET 的二進位的文件

文章翻譯 文章翻譯
文章編號: 318425 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步告訴您如何建置 Web 服務和 Web 服務用戶端來傳送和接收藉由使用 Microsoft ASP.NET 和 Microsoft Visual C#.NET 二進位文件。您可以使用 ASP.NET 和 Visual C#.NET 建置 Web 服務,同時儲存二進位的文件到資料夾在 Web 伺服器上,並從 Web 伺服器上的資料夾中擷取二進位文件。您可以為簡單的文件管理系統在 Web 上使用這項服務。

建置 Web 服務

  1. 在 Microsoft Visual Studio.NET 中的 [檔案] 功能表上按一下 [新增],然後按一下 [專案]。
  2. Visual C# 專案,選取 ASP.NET Web 服務。輸入或貼 http://localhost/DocumentManagementService 上的 位置,然後按一下 [確定]。預設情況下,Service1.asmx 會建立,且在 [設計] 檢視中顯示。
  3. 按一下 [檢視] 功能表以顯示 Service1.asmx 的 [程式碼] 檢視的 程式碼
  4. 將下列 WebMethods 程式碼加入至 Service1 類別
    
    [WebMethod]
    public bool SaveDocument( Byte[] docbinaryarray, string docname)
    {
    	string strdocPath;
    	strdocPath = "C:\\DocumentDirectory\\" + docname;
    	FileStream objfilestream =new FileStream(strdocPath,FileMode.Create,FileAccess.ReadWrite);
    	objfilestream.Write(docbinaryarray,0,docbinaryarray.Length);
    	objfilestream.Close();
    
    	return true;
    }
    
    [WebMethod]
    public int GetDocumentLen(string DocumentName)
    {
    	string strdocPath;
    	strdocPath = "C:\\DocumentDirectory\\" + DocumentName;
    
    	FileStream objfilestream = new FileStream(strdocPath,FileMode.Open,FileAccess.Read);
    	int len = (int)objfilestream.Length;			
    	objfilestream.Close();
    
    	return len;
    } 
    
    
    [WebMethod]
    public Byte[] GetDocument(string DocumentName)
    {
    	string strdocPath;
    	strdocPath = "C:\\DocumentDirectory\\" + DocumentName;
    
    	FileStream objfilestream = new FileStream(strdocPath,FileMode.Open,FileAccess.Read);
    	int len = (int)objfilestream.Length;			
    	Byte[] documentcontents  = new Byte[len];
    	objfilestream.Read(documentcontents,0,len);
    	objfilestream.Close();
    
    	return documentcontents;	
    } 
    					

    注意:程式碼會將文件儲存至 <root>: \\DocumentDirectory\\ 伺服器上的目錄路徑。變更這資料夾,在您的 Web 伺服器上您想要儲存文件。

  5. 將下列命名空間加入至 [Service1.asmx 開頭:
    using System.IO;
  6. 測試 Web 服務:
    1. 在 [偵錯] 功能表上按一下 [開始] 以啟動 Web 服務]。這會啟動,Web 瀏覽器,並出現服務描述] 的 [說明] 頁面。
    2. 請確定 SaveDocumentGetDocumentGetDocumentLen 方法顯示。
    3. 關閉 Web 瀏覽器視窗,以停止偵錯。

建置 Web 服務用戶端

  1. 在 Visual Studio.NET 中的 [檔案] 功能表上按一下 [加入專案,然後按一下 [新增專案]。
  2. Visual C# 專案] 清單中選取 Windows 應用程式,再按 [確定]。依照預設值,會建立 Form1。
  3. 將 Web 參考至 Web] 服務加入,如下所示:
    1. 在 [方案總管中,在用戶端專案項目上按一下滑鼠右鍵。快顯 功能表上,然後選取 [加入 Web 參考]。
    2. 在 [加入 Web 參考] 對話方塊輸入 [Web] 服務的 URL,Web 服務描述語言 (WSDL) 檔案,並按下 ENTER。

      注意:WSDL 檔案的預設位置是 http://localhost/DocumentManagementService/Service1.asmx?WSDL。
    3. 在 [加入 Web 參考] 對話方塊按一下 [加入參考]。
  4. 將兩個按鈕加入 Form1。將 button1 的 Text 屬性設定至 存放區伺服器上的文件。將 button2 的 Text 屬性設定為 從伺服器擷取文件
  5. 連按兩下 button1button2 來建立預設按一下這些按鈕的事件處理常式。
  6. 使用下列程式碼取代處理常式:
    string sFile = "<file path>";
    
    private void button1_Click(object sender, System.EventArgs e)
    {
    	FileStream objfilestream = new FileStream(sFile,FileMode.Open,FileAccess.Read);
    	int len = (int)objfilestream.Length;
    	Byte[] mybytearray = new Byte[len];
    	objfilestream.Read(mybytearray,0,len);
    	localhost.Service1 myservice = new localhost.Service1();
    	myservice.SaveDocument(mybytearray,sFile.Remove(0,sFile.LastIndexOf("\\")+1));
    	objfilestream.Close();
    }
    
    private void button2_Click(object sender, System.EventArgs e)
    {
    	MemoryStream objstreaminput = new MemoryStream();
    	FileStream objfilestream = new FileStream(sFile.Insert(sFile.LastIndexOf("."),"2"), FileMode.Create,FileAccess.ReadWrite);
    						
    	localhost.Service1 myservice = new localhost.Service1();
    	int len = (int)myservice.GetDocumentLen(sFile.Remove(0,sFile.LastIndexOf("\\")+1)); 
    	Byte[] mybytearray = new Byte[len];
    	mybytearray = myservice.GetDocument(sFile.Remove(0,sFile.LastIndexOf("\\")+1));
    	objfilestream.Write(mybytearray,0,len);
    	objfilestream.Close();
    }
    					
    注意:sFile 變數必須包含上載至伺服器的文件在本機檔案路徑。 當下載文件放在同一個資料夾中,而值為 2 會附加至檔案名稱。

  7. 在檔案開頭加入下列命名空間:
    using System.IO;
  8. 在 [方案總管中,在用戶端專案項目上按一下滑鼠右鍵。然後選取 [設定為啟始專案 快顯 功能表上

試試看

  1. 在 [偵錯] 功能表上按一下 [開始]。 Form1 會出現。
  2. 按一下 [標示為 「 伺服器 」 上的儲存庫文件] 按鈕。 這會呼叫 SaveDocument Web 方法。這個 Web 方法將本機文件儲存在 <root>: 伺服器上的 [\DocumentDirectory\] 資料夾。 您傳送文件之後請確認檔案存在於目的資料夾中。
  3. 按一下 [標示為 從伺服器擷取文件] 按鈕。 這會呼叫 GetDocument Web 方法。這個 Web 方法會擷取文件從 <root>: 伺服器上的 [\DocumentDirectory\] 資料夾。 本機程式碼中所指定的磁碟機上儲存文件。

?考

如需詳細資訊請參閱 「 Microsoft Visual Studio.NET 說明文件。

屬性

文章編號: 318425 - 上次校閱: 2003年12月15日 - 版次: 4.2
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
關鍵字:?
kbmt kbhowtomaster KB318425 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:318425
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com