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

本文关键字:保存 中的 保存的图片 文件夹 RT Web 图像 Windows Phone | 更新日期: 2023-09-27 18:31:44

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

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

你只需要这个

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);

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

我解决了它,这要归功于MSDN论坛上的mSpot Inc。我现在使用的代码:

StorageFolder picsFolder = KnownFolders.SavedPictures;
StorageFile file = await picsFolder.CreateFileAsync("myImage.jpg", CreationCollisionOption.GenerateUniqueName);
string url = "http://somewebsite.com/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();
}

如果您希望用户选择文件位置,则需要使用带有图片库的 FileSavePicker 作为建议的开始位置。

如果要在没有用户选择目标的情况下保存它,则需要使用如下所示的内容:

Windows.Storage.KnownFolders.picturesLibrary.createFileAsync

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

目前,我使用此本机实现:

var url = new Uri(UriString, UriKind.Absolute);
var fileName = Path.GetFileName(url.LocalPath);
var w = WebRequest.CreateHttp(url);
var response = await Task.Factory.FromAsync<WebResponse>(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);