我想为我在浏览器中以 Javascript 生成的 CSV 提供下载链接。数据 URI 是一个显而易见的选择,但它们在 IE 中对 CSV 不起作用。
问题 #1:是否有任何跨浏览器的方式可以完全在客户端执行此操作?
我很确定答案是否定的。下一种方法是生成一个链接,比如/data_download?data=...
,并拥有一个相应的服务器端资源,该资源只响应data
来自查询字符串的字段内容。现在的问题似乎是 IE 的最大 URL 长度大约是 2 KB,我不想在我的系统中建立这个限制。
所以我创建了一个服务器端资源,这样我就可以/data_download
使用表单数据发布到,其中“数据”属性是 CSV 内容,并使用表单的“数据”字段进行响应。这似乎可行,但这是一个痛苦的 b/c 我需要<form>
在客户端标记中有一个,即使我设置了mimetype
正确,我也会在浏览器中收到警告,让我认为这会在某些浏览器中中断:
资源解释为文档,但使用 MIME 类型 text/csv 传输:“http://localhost:8001/data_download”
问题 #2:有没有更好的方法来做到这一点,它具有以下部分或全部特征:
- 无状态:我不会在服务器上创建令牌或任何需要在请求之间存储状态的东西
- 使用 GET 请求:这样我就可以只拥有一个
<link>
标签而不是整个<form>