【问题标题】:Uploading a file to an apache server将文件上传到 apache 服务器
【发布时间】:2009-05-27 14:43:14
【问题描述】:

我有一个 java 函数可以为 xml 文件生成数字签名。这是给我一些麻烦的摘录:

String boundary = MultiPartFormOutputStream.createBoundary();
HttpURLConnection urlConn = (HttpURLConnection)MultiPartFormOutputStream.createConnection(new URL(url + "/sign"));
urlConn.setRequestProperty("Accept", "*/*");
urlConn.setRequestProperty("Content-Type", MultiPartFormOutputStream.getContentType(boundary));
urlConn.setRequestProperty("Cache-Control", "no-cache");
urlConn.setDOInput(true);
urlConn.setDoOutput(true);

MultiPartFOrmOutputStream up = new MultiPartFormOutputStream(urlCOnn.getOutputStream(), boundary);
up.writeField(SignServletParams.detachedParam, "1");
up.writeFile(SignServletParams.xmlParam, "text/xml", "xml_file.xml", XMLUtil.toEncodedStream(doc);
up.close();

Document ret = null;
String connRead = "";
BufferedReader down = new BufferedReader(new InputStreamReader(urlCOnn.getINputStream()));

如果我尝试上传小的 xml 文件,它可以正常工作,但是,如果 xml 文件较大(有几千个节点),我会得到一个 IOException,其中正在创建 BufferedReader。异常消息只是指出服务器返回了 500 状态。我检查了 Apache 服务器日志,它报告了以下内容:

输入过滤器:无法创建临时文件:“文件名”

我从编写它的其他人那里继承了此代码,因此我仍在尝试将所有内容拼凑在一起,但任何有关该函数为何适用于小文件而无法用于较大文件的任何见解将不胜感激。

【问题讨论】:

  • 所以是java客户端发送xml,Apache处理?图中有没有php?

标签: java apache


【解决方案1】:

如果这是一个愚蠢的答案,我很抱歉,但是如果必要的话,你能否在“上传者端”将文件分成几部分,然后在“服务器端”再次合并它们?

【讨论】:

    【解决方案2】:

    感谢 Johannes 的建议,但我弄清楚了问题所在,我很傻。事实证明,mod_security 配置文件指定的临时文件创建目录不存在。将其更改为真实的目录路径可以解决所有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 2016-01-28
      • 2011-11-16
      • 2015-06-27
      相关资源
      最近更新 更多