我使用Liberty for Java运行时在IBM Bluemix中开发Java Web应用程序。在我的应用程序中,我创建了csv文件,我想在下载时提供给我的用户。
不幸的是,我无法弄清楚我要把这些文件写到哪里。网址应该是http://myapp.eu-gb.mybluemix.net/test.csv或http://myapp.eu-gb.mybluemix.net/download/test.csv
我是否必须在server.xml中指定路由?
答案 0 :(得分:1)
请注意,在云中部署应用程序(特别是基于Cloud Foundry的平台)需要考虑有关本地文件系统的一些注意事项:
如果您想了解有关此主题的更多信息,请查看Considerations for Designing and Running an Application in the Cloud。
我建议您查看Bluemix上的Object Storage服务,该服务允许存储您的数据并使用API检索它。
答案 1 :(得分:0)
你能不能马上下载文件?不是将数据写入FileOutputStream
或PrintWriter
,而是将数据写入从OutputStream
获得的HttpServletResponse
或response.setContentType("text/csv");
OutputStream outputStream=response.getOutputStream();
writeCsvData(outputStream);
。
例如:
response.setContentType("text/csv");
PrintWriter writer=response.getWriter();
writeCsvData(writer);
或
{{1}}
答案 2 :(得分:0)
当您完全了解Cloud Foundry中与ephemeral file system相关的问题时,您应该能够通过ServetContext.getRealPath('/')
调用在磁盘上获取应用程序的真实路径。现在,假设您部署了一个简单的Web应用程序,您可以将文件写入该位置,并通过http://<appName>.mybluemix.net/<file>
访问它们。如果您使用非根上下文路径或想要将文件放在子目录中(只要该子目录不是WEB-INF
或META-INF
),这也应该有用。