为什么?format = csv文件没有扩展名
我有一个标准的restful rails应用程序。为什么?format = csv文件没有扩展名
format.html { @users = User.find(:all, :limit => 10)}
format.csv { @users = User.find(:all, :limit => 10) }
当网址
http://localhost:3000/users.csv
我与名users.csv文件。
但是如果该URL
http://localhost:3000/users?format=csv
然后我得到的文件有名称的用户。我想要文件名为users.csv。
这是浏览器的默认文件命名即将开始。浏览器不知道format参数的含义。它只是看到被访问的资源被称为“用户”,所以它默认使用该文件名。
在前面的例子中,被请求的资源被称为users.csv,因此它使用它作为默认文件名。
您可能还想查看Content-Disposition HTTP标头。这将导致浏览器提示用户使用指定的文件名作为默认值保存文件(用户可以自由修改),而不是在浏览器中显示文件。因此,你可以有你的资源是http://localhost:3000/users?format=csv,但是默认的文件名与此头foo.csv:
Content-disposition: attachment; filename=foo.csv
退房this Microsoft link一些更多的信息。这个概念对于任何HTTP技术来说都是一样的。
将Content-Disposition
响应标题设置为attachment; filename=users.csv
。
您可以发送Content-disposition
标头,其中包含filename
参数以向用户建议默认文件名。例如,Content-dispostion: attachment; filename=users.csv
。
默认情况下,浏览器通常使用URL路径部分的最后一个组件(查询之前的部分,以?
开头)作为文件名。某些浏览器(如Safari)如果不相信当前扩展名与MIME类型相匹配,也会添加基于MIME类型的扩展名,并且他们知道要使用哪种扩展名。
这是默认的MSIE行为。它忽略Content-Disposition
标题的filename
参数(如果您自己设置了任何参数)。如果你想让它在浏览器中工作,你真的需要将完整的文件名追加为URL的pathinfo。所有其他浏览器按预期尊重Content-Disposition
标题。