2011-05-18 79 views
1

我工作的一個API類型的項目,它接受一個文件的字節數組web服務,怎麼辦httpPost使用C#

我已經寫了一個WebMethod (不完全是。我使用MVC創建像REST API)

public UploadFileImage(string employeeId, byte[] imageBytes, string imageName) 
{ 
    // saves the imagebyte as an image to a folder 
} 

Web服務將通過一個Web應用程序被消耗掉,或窗口,甚至iPhone或這種便攜式的東西。我正在通過簡單的httpPost使用Web應用程序測試我的Web服務。

string Post(Uri RequestUri, string Data) 
    { 
     try 
     { 
      HttpWebRequest request = HttpWebRequest.Create(RequestUri) as HttpWebRequest; 

      request.Method = "POST"; 

      request.ContentType = IsXml.Checked ? "text/xml" : "application/x-www-form-urlencoded"; 

      byte[] bytes = Encoding.ASCII.GetBytes(Data); 
      Stream os = null; // send the Post 
      request.ContentLength = bytes.Length; //Count bytes to send 
      os = request.GetRequestStream(); 
      os.Write(bytes, 0, bytes.Length); 

      HttpWebResponse httpWebResponse = (HttpWebResponse)request.GetResponse(); 
      StreamReader streamReader = new StreamReader(request.GetResponse().GetResponseStream()); 
      return streamReader.ReadToEnd(); 

     } 
     catch (Exception ex) 
     { 
      return ex.Message; 
     } 
    } 

此代碼工作正常埃維方法一樣,AddEmployee,DeleteEmployee等參數數據爲形式的 「ID = 123 &名= ABCDEFGH & DESIG =開發」,

如何調用任何其他函數是 Post(new Uri(「http:// localhost/addemployee」),「name = abcd & password = efgh」)
其中post是我寫的函數。

所有功能都很好。除了我不知道如何使用UploadFileImage來上傳圖片?

謝謝

回答

3

嘗試編碼imageBytes作爲Base64。

+0

您是不是要找使用Convert.ToBase64String(fileByteArray),其中fileByteArray是文件的字節數。 – eMan 2011-05-18 06:51:10

+0

謝謝,多數民衆贊成工作,而張貼,發佈爲base64編碼的字符串,並在web服務,解碼它。 – eMan 2011-05-18 08:27:37

+0

很高興幫助。也許你可以接受答案! – 2011-05-18 08:56:44

0

從你的代碼段是不是太清楚,你怎麼稱呼UploadFileImage,那你是怎麼轉換它的參數tripplet到數據

這就是爲什麼我的答案是很普通:

一般情況下,你最好通過

request.ContentType = "multipart/form-data; boundary=----------------------------" + DateTime.Now.Ticks.ToString("x"); 

傳輸您的圖片文件,請允許我向您推薦a sample at StackOverflow如何格式化多部分請求。我相信,如果你是谷歌,你會發現很多詳細的例子和解釋。

我希望這有助於:-)

+0

感謝您的回覆。我在我的webservice(mvc控制器)中有另一個功能,如「AddEmployee」。 我如何打電話,是爲了對網址做一個簡單的httppost。 Post(new Uri(「http:// localhost/addemployee」),「name = abcd&password = efgh」) 其中post是我寫的函數 – eMan 2011-05-18 06:45:18

+0

歡迎您:-)當我寫了關於如何調用_Post()_方法是它的第二個參數 - _string Data_。當您傳遞_employeeId_,_imageBytes_和_imageName_時,它們如何映射到_Data_? – Lev 2011-05-18 07:19:21

+0

:)這就是我的問題是關於。 「對所有功能都有好處,除了我不知道如何使用UploadFileImage來上傳圖片? 即,對於AddEmployee和其他功能,我可以說Data =「name = abcd&password = efgh」。但我怎麼會這樣做UploadFileImage – eMan 2011-05-18 07:35:52