回答

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); 
相關問題