2013-04-08 36 views
5

Ứng dụng của chúng tôi là ứng dụng dựa trên video/âm thanh và chúng tôi đã tải lên tất cả phương tiện trên Windows Azure.Tải xuống tệp phương tiện có lập trình trong Windows Phone 8

Tuy nhiên, điều này là bắt buộc để tạo điều kiện cho người dùng tải xuống tệp âm thanh/video theo yêu cầu để họ có thể phát nội bộ.

Vì vậy, tôi cần tải xuống tệp âm thanh/video theo lập trình và lưu nó trong IsolatedStorage.

Chúng tôi có URL truy cập tệp phương tiện Windows Azure cho mỗi âm thanh/video. Nhưng tôi đang mắc kẹt trong bước đầu tiên của tải tập tin phương tiện truyền thông.

Tôi googled và đi qua this article, nhưng đối với WebClient không có hàm DownloadFileAsync mà tôi có thể sử dụng.

Tuy nhiên tôi đã thử chức năng DownloadStringAsyn khác của nó và tải xuống tệp phương tiện có định dạng chuỗi nhưng không biết cách chuyển đổi sang định dạng âm thanh (wma)/video (mp4). Vui lòng đề nghị tôi, làm cách nào tôi có thể tiếp tục? Có cách nào khác để tải xuống tệp phương tiện không?

Đây là mẫu mã mà tôi sử dụng

private void ApplicationBarMenuItem_Click_1(object sender, EventArgs e) 
    { 
     WebClient mediaWC = new WebClient(); 
     mediaWC.DownloadProgressChanged += new DownloadProgressChangedEventHandler(mediaWC_DownloadProgressChanged); 
     mediaWC.DownloadStringAsync(new Uri(link));    
     mediaWC.DownloadStringCompleted += new DownloadStringCompletedEventHandler(mediaWC_DownloadCompleted);   

    } 

    private void mediaWC_DownloadCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     if (e.Cancelled) 
      MessageBox.Show("Downloading is cancelled"); 
     else 
     { 
      MessageBox.Show("Downloaded"); 
     } 
    } 

    private void mediaWC_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) 
    { 
     statusbar.Text = status= e.ProgressPercentage.ToString(); 
    } 

Trả lời

1

Đối tải dữ liệu nhị phân, sử dụng [WebClient.OpenReadAsync][1]. Bạn có thể sử dụng nó để tải xuống dữ liệu khác với dữ liệu chuỗi.

var webClient = new WebClient(); 
webClient.OpenReadCompleted += OnOpenReadCompleted; 
webClient.OpenReadAsync(new Uri("...", UriKind.Absolute)); 

private void OnOpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{ 

} 
1

Save này trong hộp công cụ của bạn :)

public static Task<Stream> DownloadFile(Uri url) 
    { 
     var tcs = new TaskCompletionSource<Stream>(); 
     var wc = new WebClient(); 
     wc.OpenReadCompleted += (s, e) => 
     { 
      if (e.Error != null) tcs.TrySetException(e.Error); 
      else if (e.Cancelled) tcs.TrySetCanceled(); 
      else tcs.TrySetResult(e.Result); 
     }; 
     wc.OpenReadAsync(url); 
     return tcs.Task; 
    } 
+0

thể u cung cấp một ví dụ hoàn chỉnh về vấn đề này? Sau khi gọi DownloadFile làm thế nào tôi có thể lưu các tập tin vào bị cô lậpStorage –

Các vấn đề liên quan