我有一个JSP-File,它创建一个CSV文件。
告诉服务器该文件是CSV文件我将以下代码添加到JSP:
response.setContentType ("application/csv");
response.setHeader("Content-Disposition", "attachment;filename=test.csv");
在文件中,我只使用“Writer”对象(out-Variable)编写文件的内容。 因此,我使用以下代码来生成文件:
out.write("test1;test2;etc");
此csv文件大约有16列,大约有3000行。
我遇到的问题是“下载文件”-Dialog不会出现更大的文件。当我只有128行时,它可以工作,浏览器确实显示“下载文件” - 窗口。当我有129行时,浏览器只需用纯文本打开文件(IE忽略换行符)。这种情况发生在我测试的每个浏览器中(IE 11和Firefox)。我实际上不知道为什么会发生这种情况,尽管我的猜测是它与Writer-Object有关。我已经尝试“刷新()”Writer,但这并没有改变任何东西。
提前致谢!
编辑: 我确实删除了以下代码。当j限制为50时,它确实有效。如果设置为100,则不会。 .jsp是用href.location或window.open()打开的(它似乎没什么区别)
<%
int j = 0;
int k = 0;
for (j = 0; j < 100; j++)
{
out.write(";");
for (k = 0; k < 16; k++)
{
out.write(j + "TEST");
if (k != 15)
{
out.write(";");
}
}
out.write("\r\n");
}
response.setContentType ("application/csv");
response.setHeader("Content-Disposition", "attachment;filename=test.csv");
%>
答案 0 :(得分:0)
更改tomcat
webapps / manager / WEB-INF / web.xml 中的以下配置。
我们可以更改此设置,只需在每个大小限制上添加0。
最后配置:
<multipart-config>
<!-- 50MB max -->
<max-file-size>524288000</max-file-size>
<max-request-size>524288000</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
同时检查,
<强> maxPostSize 强>
POST
的最大大小(以字节为单位),将由容器FORM URL
参数解析处理。可以通过将此属性设置为小于或等于0的值来禁用该限制。如果未指定,则将此属性设置为2097152 (2 megabytes)
。
另一个限制是:
maxHttpHeaderSize
请求和响应HTTP标头的最大大小,以字节为单位指定。如果未指定,则此属性设置为4096 (4 KB)
。
您可以在
中找到它们$TOMCAT_HOME/conf/server.xml
答案 1 :(得分:0)
Jsp非常适合生成HTML输出。
由于您希望生成csv,因此最好使用servlet。我做到了,它适用于50000行。这是我的演示代码:
public class CsvServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest hsr, HttpServletResponse response) throws ServletException, IOException {
response.setStatus(HttpServletResponse.SC_OK);
response.setHeader("Content-Disposition", "attachment;filename=test.csv");
response.setContentType ("application/csv");
PrintWriter pw = response.getWriter();
for (int i=0; i<50000; i++) {
pw.print(i);
for (char c: "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray()) {
pw.print(',');
pw.print(c);
}
pw.println();
}
}
}