Mar*_*und 9 webresponse download stream windows-runtime storagefile
我正在努力解决一个简单的问题.我想使用以下代码从网上下载图像:
WebRequest requestPic = WebRequest.Create(@"http://something.com/" + id + ".jpg");
WebResponse responsePic = await requestPic.GetResponseAsync();
Run Code Online (Sandbox Code Playgroud)
现在我想在StorageFile中编写WebResponse的流(例如,在应用程序的存储中创建一个文件id.jpg),但我还没有找到任何方法来实现它.我在网上搜索它,但没有成功 - 所有方式都不兼容Stream类型等等.
能否请你帮忙?
Mar*_*und 12
我找到了以下解决方案,它的工作原理并没有太复杂.
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;
}
Run Code Online (Sandbox Code Playgroud)
小智 7
您需要将响应流读入缓冲区,然后将数据写入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);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8092 次 |
最近记录: |