【问题标题】:C# write stream into a .zip-file on Windows IoTC# 将流写入 Windows IoT 上的 .zip 文件
【发布时间】:2017-08-17 20:42:46
【问题描述】:

我编写了一个 UWP-App 来通过 REST-Requests 下载文件。 该应用程序在带有 Windows IoT 的 Raspberry Pi 3 上运行。

我想将“testStream”写入 .zip 文件并下载。 . 这是我的代码:

try
        {
            Uri uri = new Uri("http://xxxx:3080/cds/api/download/book/46795403-de-DE");
            HttpWebRequest getRequest = (HttpWebRequest)HttpWebRequest.Create(uri);
            getRequest.Method = "GET";
            getRequest.Headers["Authorization"] = "Bearer xyxyxy";
            HttpWebResponse response2 = await getRequest.GetResponseAsync() as HttpWebResponse;
            StreamReader streamReader2 = new StreamReader(response2.GetResponseStream());
            Stream testStream = response2.GetResponseStream();
            getResult = streamReader2.ReadToEnd();
            textBox2.Text = getResult;

            await Task.Run(() =>
            {
                Task.Yield();
                using (var fs = File.Create("\\myZipDownload.zip"))
                {
                    testStream.CopyTo(fs);
                }
            });
        }

我收到此错误:

"Access to the path 'C:\myZipDownload.zip' is denied."

【问题讨论】:

标签: c# rest download uwp windowsiot


【解决方案1】:

你需要一个可写的目的地。

您可以使用 Environment.GetFolderPath 来获取可写路径。

how-to-get-temporary-folder-for-current-user

【讨论】:

  • 谢谢!我现在可以下载文件了。但它的大小是 0 字节。我哪里失败了?
  • @k.troy2012,不确定,我知道GetResponse/GetResponseAsync 将返回相同的HttpWebResponse 对象,而不是“新”对象,所以可能是因为您要制作两个调用GetResponseStream 然后第二次流已经被读取并且需要重新开始读取(我不确定网络响应是否可能......)。尝试删除对GetResponseStream 的所有调用,除了用于写入文件的调用。还记得为此调用Dispose,或将其包装在using 语句中。
  • 我删除了另一个调用 GetResponseStream,现在它工作正常!
猜你喜欢
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 2019-07-20
  • 2013-12-02
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多