【问题标题】:Unable to download Tiff Data from api无法从 api 下载 Tiff 数据
【发布时间】:2014-07-17 15:39:17
【问题描述】:

我正在使用能够下载 tif 文件的 API。我正在做的是获取异步请求的结果,然后将流复制到我桌面上的文件中。每当我使用 IrfanView 打开文件时,它会说它有无法识别的标题。

我检索这些数据的步骤是:

首先,我将使用ReadAsStreamAsync() 函数获取数据。保存检索数据内容的变量是Stream 类型。然后我会打开一个文件流并使用CopyTo() 函数将数据从结果复制到文件中。这是这样做的正确方法吗?

            dynamic resultContent = null;
            Stream result = null;
            var queryString = args.Length == 0 ? "" : "?" + string.Join("&", args);
            var url = _cfg.Server.apiUrl + _apiUri + queryString;

            if (_apiOp == Operation.Read && !queryString.Contains("id"))
                resultContent = this.GetAsync(url).Result.Content.ReadAsStringAsync().Result;
            else if (_apiOp == Operation.Write)
                resultContent = this.PostAsync(url, content).Result.Content.ReadAsStringAsync().Result;
            else if (_apiOp == Operation.Delete)
                resultContent = this.DeleteAsync(url).Result.Content.ReadAsStringAsync().Result;
            else if (_apiOp == Operation.Read && queryString.Contains("id"))
                result = this.GetAsync(url).Result.Content.ReadAsStreamAsync().Result;

            if (queryString.Contains("id"))
            {
                var fileStream = File.Create(@"C:\Users\wei\Desktop\MyGeoTiff.tiff");
                result.CopyTo(fileStream);
                fileStream.Close();
            }

【问题讨论】:

  • 请张贴您的代码,或者在代码说明之外发布。
  • 好的,我在我的代码中添加了。
  • 复制流确实是正确的方法(可以是using而不是.Close)。您的问题可能在于了解 API 返回的内容 - 使用 Fiddler 查看 read+id 调用的结果。旁注:您的 if 不匹配,但我认为在这种情况下不会导致任何问题。
  • 是的,这就是问题所在。我期望 Tif 根据文档返回,但它返回了 tif 的 zip。我以前从不知道提琴手,谢谢你告诉我这个程序。

标签: c# .net geotiff


【解决方案1】:

API 正在返回一个 zip 文件,而不是我所期望的 tif 文件。将文件扩展名更改为 .zip 并能够成功获取 zip 中的 tif。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多