我的GWT&应用程序引擎应用程序,基本上是用户上传的文件表。
以下是BlobServiceImpl的doGet函数的最后一部分,它在用户请求时为Blob提供服务:
// got the entity already
filename = (String) entity.getProperty("filename");
resp.addHeader("Content-Disposition", "filename=" + filename);
blobstoreService.serve(blobKey, resp);
上面的代码从实体元数据中获取文件名,在HttpServlet响应中设置文件名,然后为实际的blob提供服务。
我遇到的问题是,对于文件名中有空格的文件,Firefox只将文件名设置为第一个单词——空格后的所有内容都被排除在外。这很烦人,因为一个名为"My Amazing file.xls"的文件将被保存为"My"。
也许与字符编码有关?奇怪的是,它在其他浏览器中运行良好。
感谢您的帮助:)
更改此项:
resp.addHeader("Content-Disposition", "filename=" + filename);
对此:
resp.addHeader("Content-Disposition", "filename="" + filename + """);
解决了我的问题。
编码快乐!
您可能需要对文件名使用urlencode函数,以便"变成"%20"。