2014-02-17 75 views
0

最近,我試圖創建數據庫相關的Windows Phone 8應用程序,因爲我想動態更新內容,每當我更新,它會在我的應用程序還可以自動更新,怎樣下載(.sqlite)從URL文件並將其保存在獨立存儲中的Windows Phone 8個應用

讓我決定保持分貝(.sqlite)文件我的所有數據並上傳到服務器上

請注意,我還沒有在本地和我創建的數據庫將嘗試從服務器下載文件的SQLite,從sqlite的文件我會得到數據庫表,

所以我Requir EMENT是

1)如何下載(.sqlite)從服務器通過服務器的URL文件像(www.example.com/folder/sample.sqlite)

2)如何保存在本地是sqlite的文件或獨立存儲

我已搜查,並從網上得到一些samplew,但所有這一切會在當地建立自己的數據庫,

所以請有人給我的解決方案,如何直接從URL下載.sqlite文件並保存在本地。,

+1

如果你想下載一個文件,然後我寫了【這裏的答案](http://stackoverflow.com/a/21811036/2681948)。方法第一不適合,但第二和第三可能是。你也可以考慮一下後臺傳輸 – Romasz

+0

我試圖從其中U給出的鏈接第三mwthod,但我得到的錯誤這樣的「可訪問性不一致:返回類型‘System.Threading.Tasks.Task ’是比法「iccWorldT20i.MainPage.DownloadFileSimle(的System.Uri,字符串)」 「。少的,請幫我解決,或者給一些其他的例子 –

+1

儘量讓枚舉DownloadStatus市民(我已經編輯答案)。給我一個幫助它的標誌。 – Romasz

回答

1

好的現在我明白了。問題是該鏈接不包含該文件,您將不得不先使用GetResponse(),然後獲取ResponseStream。

爲了使它工作,你有你的WebClient(再次)延長:

public static class Extensions 
{ 
    public static Task<WebResponse> GetResponseAsync(this WebRequest webRequest) 
    { 
     TaskCompletionSource<WebResponse> taskComplete = new TaskCompletionSource<WebResponse>(); 
     webRequest.BeginGetResponse(
      asyncResponse => 
      { 
       try 
       { 
        WebRequest responseRequest = (WebRequest)asyncResponse.AsyncState; 
        WebResponse someResponse = (WebResponse)responseRequest.EndGetResponse(asyncResponse); 
        taskComplete.TrySetResult(someResponse); 
       } 
       catch (WebException webExc) 
       { 
        WebResponse failedResponse = (WebResponse)webExc.Response; 
        taskComplete.TrySetResult(failedResponse); 
       } 
       catch (Exception exc) { taskComplete.SetException(exc); } 
      }, webRequest); 
     return taskComplete.Task; 
    } 

之後,你只需要放少許修改代碼:

public static async Task<DownloadStatus> DownloadFileSimle(Uri fileAdress, string fileName) 
{ 
    try 
    { 
     WebRequest request = WebRequest.Create(fileAdress); 
     if (request != null) 
     { 
      WebResponse response2 = await request.GetResponseAsync(); 
      using (Stream resopnse = response2.GetResponseStream()) 
      { 
      // the rest goes the same 

正如我曾嘗試它的工作原理和該文件的下載內容。

希望這會有所幫助。

相關問題