private async Task <StorageFile?> DownloadPickerPickSaveFileAsync(CancellationToken token) { if (SuggestedSaveFile == null) { var temporaryFolder = ApplicationData.Current.LocalCacheFolder; if (!Directory.Exists(temporaryFolder.Path)) { temporaryFolder.MakePersistent(); } if (string.IsNullOrEmpty(SuggestedFileName)) { SuggestedFileName = Guid.NewGuid().ToString(); } var extension = FileTypeChoices.Count > 0 ? FileTypeChoices.First().Value[0] : ""; // The mime type is chosen by the extension, and we cannot reliably send multiple mime type in the browser var fileName = SuggestedFileName + extension; SuggestedSaveFile = await temporaryFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); SuggestedSaveFile.ProviderOverride = StorageProviders.WasmDownloadPicker; } return(SuggestedSaveFile); }
private string[] GetMimeTypes() { return(FileTypeChoices .SelectMany(choice => choice.Value) .Select(extension => MimeTypeService.GetFromExtension(extension)) .Distinct() .ToArray()); }
private async Task <StorageFile?> DownloadPickerPickSaveFileAsync(CancellationToken token) { if (SuggestedSaveFile == null) { var temporaryFolder = ApplicationData.Current.LocalCacheFolder; if (!Directory.Exists(temporaryFolder.Path)) { temporaryFolder.MakePersistent(); } // The mime type is chosen by the extension, and we cannot reliably send multiple mime type in the browser var fileName = SuggestedFileName + FileTypeChoices.First().Value[0]; SuggestedSaveFile = await temporaryFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); } return(SuggestedSaveFile); }
private string[] GetFileTypes() => FileTypeChoices.SelectMany(x => x.Value.Select(val => val.TrimStart(new[] { '.' }))).ToArray();