【发布时间】:2011-10-31 17:28:56
【问题描述】:
我已经在 AppEngine 数据存储上实现了基本的文件上传/下载。
我想要的功能是将名为“base.c”的文件作为文本文件打开。
所以我做了以下事情:
(当然我的代码是针对一般情况的,但这个具体的例子说明了问题)
resp.setContentType("text/plain");
resp.setHeader("Content-Disposition", "inline; filename=base.c");
这将在浏览器中将其作为文本文件打开,这正是我所需要的。
但我也希望当用户使用浏览器的“将页面另存为..”选项时,它将提供“base.c”的初始名称。 在 firefox 中就是这样做的(6),但它在 chrome(15) 和 safari(5) 上给出了“下载”的默认名称。
甚至更糟糕 - 选择Base.cas.C作为文件名Chrome警告用户这是错误的扩展并要求确认继续。
现在,如果我使用“附件”而不是“内联”,它不会打开文件,而是使用 right 名称下载它。
如何使默认另存为..名称为“base.c”?
这是浏览器的错还是我滥用了 HTTP 标头?
(如果有帮助,所有测试均在 OSX 10.6 上进行,下载站点为:
http://------.appspot.com/download?name=base.c)
【问题讨论】:
标签: java google-app-engine servlets http-headers content-disposition