Я пытаюсь создать страницу загрузки в Xamarin Forms (PCL, поэтому WebClient нельзя использовать) с индикатором выполнения загрузки. Я использовал следующую информацию из Xamarin, но безуспешно:
http://developer.xamarin.com/recipes/ios/network/web_requests/download_a_file/ http://developer.xamarin.com/recipes/cross-platform/networking/download_progress/
Это мой текущий код (с рабочим индикатором выполнения):
using System;
using System.Collections.Generic;
using Xamarin.Forms;
using System.Net.Http;
using System.IO;
using System.Threading.Tasks;
namespace DownloadExample
{
public partial class DownloadPage : ContentPage
{
public DownloadPage ()
{
InitializeComponent ();
DownloadFile("https://upload.wikimedia.org/wikipedia/commons/3/3d/LARGE_elevation.jpg");
}
private async Task<long> DownloadFile(string url)
{
long receivedBytes = 0;
long totalBytes = 0;
HttpClient client = new HttpClient ();
using (var stream = await client.GetStreamAsync(url)) {
byte[] buffer = new byte[4096];
totalBytes = stream.Length;
for (;;) {
int bytesRead = await stream.ReadAsync (buffer, 0, buffer.Length);
if (bytesRead == 0) {
await Task.Yield ();
break;
}
receivedBytes += bytesRead;
int received = unchecked((int)receivedBytes);
int total = unchecked((int)totalBytes);
double percentage = ((float) received) / total;
progressBar1.Progress = percentage;
}
}
return receivedBytes;
}
}
}
Теперь мне нужно сохранить файл в моем локальном хранилище. Но в этом примере я не получаю содержимое файла, поэтому я не могу записать его в свое локальное хранилище. Что мне нужно изменить в коде, чтобы это стало возможным?
К вашему сведению: в этом примере я загружаю изображение, но это будет функция .pdf / .doc / .docx.
Заранее спасибо.
BR, FG