WinRT的StorageFile写下载的文件(WinRT StorageFile write do

2019-06-26 02:17发布

我用简单的问题所困扰。 我想使用此代码从网上下载的图片:

WebRequest requestPic = WebRequest.Create(@"http://something.com/" + id + ".jpg");
WebResponse responsePic = await requestPic.GetResponseAsync();

现在我想写WebResponse的在一个StorageFile流(例如,在应用中创建的存储文件id.jpg),但我还没有发现有任何的方式来实现这一目标。 我搜索了它的网页,但没有成功 - 所有的方式不兼容的流类型等。

能否请你帮忙?

Answer 1:

我已经找到了以下解决方案,其工作方式,而不是太复杂。

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


Answer 2:

您将需要阅读的响应流到缓冲区中,然后将数据写入到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);
        }


Answer 3:

这是可以做到在Windows应用商店的应用程序使用C ++一个REST SDK 。 它是由解释HTTP客户端教程 。



文章来源: WinRT StorageFile write downloaded file