将图像从Web保存到Windows Phone 8.1 RT C#中的“保存的图片”文件夹

如何将图像保存到Windows Phone 8.1 RT中的“已保存图片”文件夹? 我使用HttpClient从网上下载了图像。

你只需要这个

var url = "Some URL"; var fileName = Path.GetFileName(url.LocalPath); var thumbnail = RandomAccessStreamReference.CreateFromUri(url); var remoteFile = await StorageFile.CreateStreamedFileFromUriAsync(fileName, url, thumbnail); await remoteFile.CopyAsync(KnownFolders.SavedPictures, fileName, NameCollisionOption.GenerateUniqueName); 

您需要在清单中设置图片库function。

感谢MSDN论坛上的mSpot Inc,我解决了这个问题。 我现在使用的代码:

 StorageFolder picsFolder = KnownFolders.SavedPictures; StorageFile file = await picsFolder.CreateFileAsync("myImage.jpg", CreationCollisionOption.GenerateUniqueName); string url = "http://sofzh.miximages.com/c%23/someimage.jpg"; HttpClient client = new HttpClient(); byte[] responseBytes = await client.GetByteArrayAsync(url); var stream = await file.OpenAsync(FileAccessMode.ReadWrite); using (var outputStream = stream.GetOutputStreamAt(0)) { DataWriter writer = new DataWriter(outputStream); writer.WriteBytes(responseBytes); writer.StoreAsync(); outputStream.FlushAsync(); } 

如果您希望用户选择文件位置,您需要使用带有pictureLibrary的FileSavePicker作为SuggestedStartLocation 。

如果您想在没有用户选择目的地的情况下保存它,您需要使用以下内容:

 Windows.Storage.KnownFolders.picturesLibrary.createFileAsync 

我相信在这两种情况下,您都需要在清单中设置Pictures Library function 。

目前,我使用这个原生实现:

 var url = new Uri(UriString, UriKind.Absolute); var fileName = Path.GetFileName(url.LocalPath); var w = WebRequest.CreateHttp(url); var response = await Task.Factory.FromAsync(w.BeginGetResponse, w.EndGetResponse, null); await response.GetResponseStream().CopyToAsync(new FileStream(ApplicationData.Current.LocalFolder.Path + @"\" + fileName, FileMode.CreateNew)); var file = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName); await file.CopyAsync(KnownFolders.SavedPictures, fileName, NameCollisionOption.FailIfExists);