gpt4 book ai didi

java - 用户使用 "save as"时如何选择文件名?

转载 作者:行者123 更新时间:2023-11-29 08:12:43 25 4
gpt4 key购买 nike

我已经在 AppEngine 数据存储之上实现了一个基本的文件上传/下载。
我想要的功能是名为“base.c”的文件将作为文本文件打开。所以我做了以下事情:
(当然我的代码是针对一般情况的,但是这个具体的例子说明了问题)

resp.setContentType("text/plain");
resp.setHeader("Content-Disposition", "inline; filename=base.c");

这将在浏览器中将其作为文本文件打开,这正是我所需要的。
但我也希望当用户使用浏览器的“将页面另存为..”选项时,它会提供初始名称“base.c”。 它只是在 firefox 中执行此操作(6),但它在 chrome(15) 和 safari(5) 中给出默认名称“下载”。
Even worse - when choosing base.c as the file name chrome warns the user that this is the wrong extension and asks for confirmation to continue.
现在,如果我使用“附件”而不是“内联”,它不会打开文件,而是使用正确 名称下载它。

我该怎么做才能使默认另存为...名称为“base.c”?
这是浏览器的错误还是我滥用了 HTTP header ?

(如果有任何帮助,所有测试都是在 OSX 10.6 上进行的,下载站点是这样的:
http://------.appspot.com/download?name=base.c )

最佳答案

我认为大多数浏览器将页面名称默认为另存为选项的当前页面。

一个选项可能是通过使用 web.xml 中的 url 模式将 URL 从 appspot/download?name=base.c 更改为 appspot.com/download/base.c。

例如

<servlet-mapping>
<servlet-name>download</servlet-name>
<url-pattern>/download/*</url-pattern>
</servlet-mapping>

然后解析 URL 以从数据存储中获取文件名。

如果这不适用于 GAE,我深表歉意,我不熟悉它。

关于java - 用户使用 "save as"时如何选择文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7140731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com