public MainPageViewModel(INavigationService navigationService, IPublicFileSystem publicFileSystem, IOpenFileByName openFileByName, IEventAggregator eventAggregator) { _navigationService = navigationService; _eventAggregator = eventAggregator; _publicFileSystem = publicFileSystem; _openFileByName = openFileByName; AskPermissionCommand = new DelegateCommand(() => { _eventAggregator.GetEvent <RuntimePermissionEvent>().Publish(new RuntimePermissionPayload()); }); OpenPDFCommand = new DelegateCommand(async() => { string filename = "PDF.pdf"; IFolder rootFolder = _publicFileSystem.PublicDownloadFolder; IFile file = await rootFolder.CreateFileAsync(filename, CreationCollisionOption.OpenIfExists); await file.WriteAllTextAsync("123"); _openFileByName.OpenFile(file.Path); }); }
public MainPageViewModel(INavigationService navigationService, IPublicFileSystem publicFileSystem, IOpenFileByName openFileByName) { _navigationService = navigationService; // 注入各平台的非應用程式專屬的沙箱資料夾 _PublicFileSystem = publicFileSystem; // 使用手機內安裝的App,開啟指定的檔案 _OpenFileByName = openFileByName; DownloadCommand = new DelegateCommand(async() => { ShowMask = true; // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types // http://www.feedforall.com/mime-types.htm string mimeType = "text/plain"; #region 依據所選擇的項目,設定下載來源與檔案名稱 string filename = ""; string url = ""; if (FileSourceTypeSelect.ToLower() == "pdf") { filename = "vulcan.pdf"; mimeType = "application/pdf"; url = "https://www.tutorialspoint.com/csharp/csharp_tutorial.pdf"; } else if (FileSourceTypeSelect.ToLower() == "image") { filename = "vulcan.png"; mimeType = "image/png"; url = "https://pluralsight.imgix.net/paths/path-icons/csharp-e7b8fcd4ce.png"; } else if (FileSourceTypeSelect.ToLower() == "mp3") { filename = "vulcan.mp3"; mimeType = "audio/mpeg"; url = "http://video.ch9.ms/ch9/4855/ca67b144-e675-48a2-a0f2-706af9644855/DataTemplateSelector.mp3"; } else if (FileSourceTypeSelect.ToLower() == "video") { filename = "vulcan.mp4"; mimeType = "video/mpeg"; url = "http://video.ch9.ms/ch9/4855/ca67b144-e675-48a2-a0f2-706af9644855/DataTemplateSelector.mp4"; } else if (FileSourceTypeSelect.ToLower() == "ppt") { filename = "vulcan.ppt"; mimeType = "application/vnd.ms-powerpoint"; url = "http://people.csail.mit.edu/mrub/talks/small_world/Seminar07_rubinstein.ppt"; } else if (FileSourceTypeSelect.ToLower() == "doc") { filename = "vulcan.doc"; mimeType = "application/msword"; url = "http://im2.nhu.edu.tw/download.php?filename=270_2af7568a.doc&dir=personal_subject/&title=C%23-%E7%AC%AC%E4%B8%80%E7%AB%A0"; } #endregion // 取得要存放該檔案的資料夾 // FileSystem 為 PCLStorage 提供的應用程式沙箱的相關資料夾 IFolder rootFolder = _PublicFileSystem.PublicDownloadFolder; try { // 建立這個檔案 IFile file = await rootFolder.CreateFileAsync(filename, CreationCollisionOption.OpenIfExists); // 取得這個檔案的 Stream 物件 using (var fooFileStream = await file.OpenAsync(FileAccess.ReadAndWrite)) { using (HttpClientHandler handle = new HttpClientHandler()) { // 建立 HttpClient 物件 using (HttpClient client = new HttpClient(handle)) { // 取得指定 URL 的 Stream using (var fooStream = await client.GetStreamAsync(url)) { // 將網路的檔案 Stream 複製到本機檔案上 fooStream.CopyTo(fooFileStream); } } } } _OpenFileByName.MakeDownloadFolder(file.Path, mimeType); _OpenFileByName.OpenFile(file.Path); } catch (Exception ex) { Debug.WriteLine(ex.Message); } ShowMask = false; }); }