【问题标题】:Uploading XML using a Java Servlet使用 Java Servlet 上传 XML
【发布时间】:2013-07-12 18:37:04
【问题描述】:

我使用以下代码上传文件,目前它上传的文件没有<..>,但我希望上传一个 XML 文件。如何上传文件?

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);

    if(isMultipart){
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        try{
            List<FileItem> fields = upload.parseRequest(request);
            Iterator<FileItem> it = fields.iterator();
            while (it.hasNext()) {
                FileItem fileItem = it.next();

                out.println(fileItem.getString());
          }
        }catch (FileUploadException e) {
            e.printStackTrace();
        }       
    }
}

编辑: 例如,如果我上传包含Screens&gt;&lt;Screen 的文件,则仅输出Screens&gt;

【问题讨论】:

  • 该 servlet 将接受任何类型的文件,xml 或其他。你有问题吗?
  • 它正在接受文件,但是当我尝试将文件输出到屏幕时,它不会从&lt; &gt; 开始输出任何内容。
  • 原始问题已编辑。
  • 如何将文件输出到屏幕上?
  • 使用out.println(fileItem.getString());

标签: java xml servlets upload


【解决方案1】:

我没有立即看到您的代码有问题,而是因为

response.setContentType("text/html;charset=UTF-8");

您告诉接收端的浏览器它正在获取 html,因此它将尝试将其接收到的数据解释为 HTML。尝试使用正确的内容类型发送数据:

response.setContentType("application/xml;charset=UTF-8");

令我困惑的是您的评论标签:Screens&gt;&lt;Screen 那不是有效的 xml。如果更正内容类型不起作用,您可以向您的问题添加一个真实的测试(类似于您的数据的最小样本)以及有效的输出。

【讨论】:

    【解决方案2】:

    如果您在浏览器上查看输出,请尝试查看源代码:

    对于 IE - 右键单击​​页面并选择“查看源代码”

    对于 FF 和 Chrome - 右键单击​​页面并选择“查看页面源代码”

    【讨论】:

    • 当我只查看源代码时,只输出Screens&gt;
    猜你喜欢
    • 1970-01-01
    • 2015-03-15
    • 2010-10-31
    • 1970-01-01
    • 2014-03-17
    • 2011-05-10
    • 2013-12-01
    • 2010-10-30
    • 2013-01-03
    相关资源
    最近更新 更多