2011-04-15 108 views
0

我是新來的WCF和休息服務,並試圖從我在網上找到的帖子做一些實現,但我仍然遇到一些問題。上傳文件與WCF REST服務

所以讓我解釋一下我的場景。

我有一個WPF應用程序,並在其中有一個反饋表單,客戶端可以填寫,附上一些截圖併發送。現在我的想法是將所有這些信息收集到一個XML文件中,我已經成功地完成了這個工作,然後將這個XML文件上傳到我的服務器上的特定文件夾中。

現在,據我瞭解,客戶端應用程序必須有一個POST方法將流發佈到服務器,然後我應該有一個服務器上的aspx頁來解碼我從POST獲得的流,以及制定我的XML文件,然後將其保存在文件夾中,如果我錯了,請糾正我。

在我已經實現了客戶端的代碼如下所示的樣子: -

public static void UploadFile() 
    { 
     serverPath = "http://localhost:3402/GetResponse.aspx"; 

     filePath = "C:\\Testing\\UploadFile\\UploadFile\\asd_asd_Feedback.xml"; 

     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serverPath); 

     //request.MediaType = "text/xml"; 

     request.ContentType = "text/xml"; 

     //request.Method = "POST"; 

     request.Method = "POST"; 

     //request.ContentLength = contentLength; 

     //request.ContentType = "application/x-www-form-urlencoded"; 

     using (FileStream fileStream = File.OpenRead(filePath)) 

     using (Stream requestStream = request.GetRequestStream()) 
     { 
      int bufferSize = 1024; 

      byte[] buffer = new byte[bufferSize]; 

      int byteCount = 0; 

      while ((byteCount = fileStream.Read(buffer, 0, bufferSize)) > 0) 
      { 
       requestStream.Write(buffer, 0, byteCount); 

      } 
     } 

     string result = String.Empty; 

     try 
     { 
      using (WebResponse response = request.GetResponse()) 

      using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
      { 
       result = reader.ReadToEnd(); 
      } 
     } 
     catch (Exception exc) 
     { 

     } 
     if (result == "OK") 
     { 

     } 
     else 
     { 
      // error... 

     } 
    } 

現在,我怎麼通過requestStream到GetResponse.aspx頁面?這是正確的方法嗎?

感謝您的幫助和時間

回答

0

我不明白你的代碼試圖做什麼。你有沒有考慮實際使用WCF客戶端和WCF服務來進行實際上傳?

有一個這樣做的示例! This blog post details如何在服務端使用編程模型,this follow-up blog post詳細說明如何在客戶端使用它。我已經看到它用於文件上傳和圖像傳輸場景很多,所以它也可以幫助你的情況!這些博客文章中的示例是一個文件上傳文件。

希望這會有所幫助!

+0

嗨Krisragh,我試圖實現該教程,但由於我是WCF的新手,沒有管理。基本上創建了BlogPostRaw類,當我試圖將它添加到正在運行的服務(Service1)時,它拋出了一個錯誤。你能指導我如何設置這個例子嗎? – Johann 2011-04-18 08:20:59

+0

嗨Krisragh,你可以給我一個這樣的代碼的樣本,因爲我仍然無法讓它正常工作 – Johann 2011-04-20 12:03:59

+0

嗨Krisragh,我以另一種方式解決它。將服務託管在我的服務器上,並從代碼中調用它。感謝您的幫助 – Johann 2011-04-20 21:27:32