1
在C#中,而不是必須使用httpwebrequest從web下載文件,將其保存到文件的某處,然後使用POST將文件上傳到webservice作爲參數之一...我可以使用流文件作爲源使用網絡文件將文件上傳到Web API嗎?
我可以改爲以某種方式從httpwebresponse打開一個閱讀器流,然後將其流入http POST?任何代碼有人可以張貼來顯示如何?
換句話說,我試圖避免首先保存到磁盤。
感謝
在C#中,而不是必須使用httpwebrequest從web下載文件,將其保存到文件的某處,然後使用POST將文件上傳到webservice作爲參數之一...我可以使用流文件作爲源使用網絡文件將文件上傳到Web API嗎?
我可以改爲以某種方式從httpwebresponse打開一個閱讀器流,然後將其流入http POST?任何代碼有人可以張貼來顯示如何?
換句話說,我試圖避免首先保存到磁盤。
感謝
類似的東西應該做的伎倆:
HttpWebRequest downloadRequest = WebRequest.Create(downloadUri) as HttpWebRequest;
using(HttpWebResponse downloadResponse = downloadRequest.GetResponse() as HttpWebResponse)
{
HttpWebRequest uploadRequest = new HttpWebRequest(uploadUri);
uploadRequest.Method = "POST";
uploadRequest.ContentLength = downloadResponse.ContentLength;
using (Stream downloadStream = downloadResponse.GetResponseStream())
using (Stream uploadStream = uploadRequest.GetRequestStream())
{
byte[] buffer = new byte[4096];
int totalBytes = 0;
while(totalBytes < downloadResponse.ContentLength)
{
int nBytes = downloadStream.Read(buffer, 0, buffer.Length);
uploadStream.Write(buffer, 0, nBytes);
totalBytes += nRead;
}
}
HttpWebResponse uploadResponse = uploadRequest.GetResponse() as HttpWebResponse;
uploadResponse.Close();
}
(未測試的代碼)
哇...我會嘗試一下,當我回到家裏,然後更新...非常感謝 – Greg 2009-09-30 23:37:10
嘿托馬斯 - 回到這個 - 我注意到我有一個問題,如果我的目標是服務器不提供ContentLength(例如在downloadResponse.ContentLength)的頁面。我似乎得到「System.NotSupportedException:此流不支持查找操作..」。這裏的任何想法如何解決這個問題? – Greg 2009-12-08 07:13:46
你在哪個指令中得到這個異常? – 2009-12-08 09:37:27