我用简单的问题所困扰。 我想使用此代码从网上下载的图片:
WebRequest requestPic = WebRequest.Create(@"http://something.com/" + id + ".jpg");
WebResponse responsePic = await requestPic.GetResponseAsync();
现在我想写WebResponse的在一个StorageFile流(例如,在应用中创建的存储文件id.jpg),但我还没有发现有任何的方式来实现这一目标。 我搜索了它的网页,但没有成功 - 所有的方式不兼容的流类型等。
能否请你帮忙?
我已经找到了以下解决方案,其工作方式,而不是太复杂。
public async static Task<StorageFile> SaveAsync(
Uri fileUri,
StorageFolder folder,
string fileName)
{
var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
var downloader = new BackgroundDownloader();
var download = downloader.CreateDownload(
fileUri,
file);
var res = await download.StartAsync();
return file;
}
您将需要阅读的响应流到缓冲区中,然后将数据写入到StorageFile。 下面的代码显示一个例子:
var fStream = responsePic.GetResponseStream();
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("testfile.txt");
using (var ostream = await file.OpenStreamForWriteAsync())
{
int count = 0;
do
{
var buffer = new byte[1024];
count = fStream.Read(buffer, 0, 1024);
await ostream.WriteAsync(buffer, 0, count);
}
while (fStream.CanRead && count > 0);
}
这是可以做到在Windows应用商店的应用程序使用C ++一个REST SDK 。 它是由解释HTTP客户端教程 。