Esempio n. 1
0
        async public Task Download(Uri fileUri, Page Card)
        {
            ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

            using (WebClient cln = new WebClient())
            {
                string filename     = "ŚĆŻ";
                string partfilename = string.Empty;
                string type         = string.Empty;
                long   Size         = 0;
                try
                {
                    cln.OpenRead(fileUri);
                    string header_contentDisposition = cln.ResponseHeaders["content-disposition"];
                    filename = new ContentDisposition(header_contentDisposition).FileName;
                    byte[] bytes = Encoding.Default.GetBytes(filename);
                    filename     = Encoding.UTF8.GetString(bytes);
                    partfilename = filename.Substring(0, filename.LastIndexOf('.'));
                    type         = filename.Substring(filename.LastIndexOf('.'));
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e);
                }

                FileSavePicker picker = new FileSavePicker();
                picker.SuggestedFileName = partfilename;
                picker.FileTypeChoices.Add(type.Substring(1), new List <string>()
                {
                    type
                });
                picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;

                var file = await picker.PickSaveFileAsync();

                var DownloadO = new Download(Card.Dispatcher)
                {
                    Filename = file.Name,
                    URL      = fileUri,
                    FileSize = Size
                };
                FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file);

                if (status == FileUpdateStatus.Complete)
                {
                    BackgroundDownloader downloader = new BackgroundDownloader();
                    DownloadOperation    download   = downloader.CreateDownload(DownloadO.URL, file);
                    DObject = DownloadO;
                    Player.Download.DownloadList.Add(DObject);

                    download.StartAsync();
                    download.RangesDownloaded += Download_RangesDownloaded;
                }
            }
        }