【问题标题】:Show downloadable link to csv显示 csv 的可下载链接
【发布时间】:2012-11-06 21:01:31
【问题描述】:

我正在尝试使用以下代码在可下载的 .csv 文件中显示数据流:

WebClient wc = new WebClient();
                    byte[] csvBytes = wc.DownloadData(url);
                    return File(csvBytes, "text/csv", "Test.csv");

URL 以这种格式返回数据:

"保罗","史密斯","A & P CONSTRUCTION","211 N JACKSON ST","纽约","NY","98055" "JEROME","HALSEY","A A A 定位公司","1906 SOUTHVIEW DR","PAPILLION","NE","68046" "迈克","GIBILISCO","ABSOLUTE SECURITY INC","944 S JEFFERSON ST","PAPILLION","NE","84102"

上述方法效果很好,我得到了一个可下载的链接......但是当我打开 .csv 文件时 - 我只得到一行的记录:

\"PAUL\"    \"SMITH\"   \"A & P CONSTRUCTION\"  \"211 N JACKSON ST\"    \"PAPILLION\"   \"NE\"  \"68046\"...

我应该如何修改上面的代码,以便获得正确格式的值(没有“\”并且在正确的列下)?

【问题讨论】:

  • 看起来很奇怪。尝试任何其他浏览器执行相同操作。或者在隐私浏览模式下尝试 FireFox 以禁用任何可能影响 CSV 格式的插件
  • 我用 firefox 和 IE(最新版本)进行测试,但得到相同的结果
  • 好的,唯一的原因是您在 DownloadData() 中获取了错误的数据。要检查这一点,请将您的退货替换为 return Content(System.Text.Encoding.UTF8.GetString(bytes));并告诉你在浏览器中得到了什么。
  • "\"PAUL\",\"SMITH\",\"A & P CONSTRUCTION\",\"211 N JACKSON ST\",\"PAPILLION\",\"NE\" ,\"68046\"\r\n\,\"JEROME\",\"HALSEY\",\"A A A LOCATING INC\",\"1906 SOUTHVIEW DR\",\"PAPILLION\",\"NE\ ",\"68046\"\r\n\ ...

标签: c# asp.net asp.net-mvc webclient


【解决方案1】:

原因是您在使用 WebClient 时会获得不同的数据。似乎服务器在为您构建 CSV 时会查看 HTTP 标头。

因此,您需要尽可能多地模拟您的浏览器(只要您在浏览器中获得正确的 CSV),以使 CSV 服务器认为您是浏览器。为此,您需要查看浏览器在访问 CSV URL 时发送的 HTTP 标头(您可以使用 Fiddler 或浏览器中内置的任何开发工具来完成)。你需要像这样结束:

wc.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
wc.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
wc.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

一一添加标头,只需确保与浏览器发送的标头完全相同(并忽略“cookie”、“主机”等标头)。

【讨论】:

    【解决方案2】:

    尝试将 Mime 类型更改为“application/csv”。

    CSV 的 Mime 类型也有:text/comma-separated-values、text/csv、application/csv、application/excel、application/vnd.ms-excel、application/vnd.msexcel、text/anytext

    【讨论】:

    • 感谢您的建议。但这没有任何区别。
    • 你可以试试“application/octet-stream”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    相关资源
    最近更新 更多