Windows Mobile Web方式下載檔案
阿新 • • 發佈:2019-02-18
以前所使用的下載檔案,都是通過webService + WSE進行的,而WebService是以XML為載體的,這樣,在下載檔案的時候,必然包含著一些沒有的結構資訊,從而也就增加了實際要下載的檔案的大小,對於移動裝置而言,網路流量是非常寶貴的,為了節約流量,所以寫了一個通過WebRequest和WebResponse完成網路檔案下載的方法,改方法的好處是流量比較小,但缺點是,要被現在的檔案必須放到Internet網路上,這樣便對檔案的安全性和下載使用者的可控性帶來一定的影響,下面是實現的程式碼
/// <summary> /// 從指定的URL以二進位制方式現在檔案 /// </summary> /// <param name="fileURL">檔案所存放的Internet地址</param> /// <returns>成功下載後,檔案在本地存放的位置,如果下載失敗,則返回""</returns> private string DownLoadFile(string fileURL) { StreamReader rdr = null; FileStream wrtr = null; string localFileName = string.Empty; try { Cursor.Current = Cursors.WaitCursor; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(fileURL); req.Method = "GET"; HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); long len = resp.ContentLength; Stream respStream = resp.GetResponseStream(); localFileName = @"/Program Files/" + fileURL.Substring(fileURL.LastIndexOf("/") + 1); wrtr = new FileStream(localFileName, FileMode.Create); byte[] inData = new byte[4096]; int bytesRead = respStream.Read(inData, 0, inData.Length); while (bytesRead > 0) { wrtr.Write(inData, 0, bytesRead); bytesRead = respStream.Read(inData, 0, inData.Length); } //判斷下在是否成功 System.IO.FileInfo fi = new FileInfo(localFileName); if (fi.Length != len) localFileName = string.Empty; fi = null; } catch (Exception ep) { MessageBox.Show(ep.Message); } finally { if(rdr != null) rdr.Close(); if(wrtr != null) wrtr.Close(); Cursor.Current = Cursors.Default; } return localFileName; }