回答

3

你只需要这个

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

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

+0

这看起来更好!我会在下一个版本中尝试。 – 2015-03-26 15:00:22

+0

如何在Javascript中实现同样的东西? – Vikas 2015-11-23 07:05:57

0

如果您希望用户选择文件位置,您需要使用FileSavePickerpictureLibrary作为SuggestedStartLocation

如果你想将其保存,而用户选择你需要使用像这样的目标:我相信你需要设置你的清单中Pictures Librarycapability这两种情况下

Windows.Storage.KnownFolders.picturesLibrary.createFileAsync 

1

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

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(); 
} 
+0

谢谢,它解决了我的问题。 – 2015-03-25 09:59:42

+0

有没有什么办法将BitmapImage源码转换为Btye数组,然后使用这个字节数组来保存图像,而不是从url获取流。 其实我想在我的应用程序中减少互联网的使用。 任何帮助将不胜感激。 :) – 2015-03-25 10:04:14

0

目前,我用这个本地实现:

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); 
相关问题