Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Servlet中以字符串形式获取文件内容_Java_Html_Xml_Servlets - Fatal编程技术网

Java 在Servlet中以字符串形式获取文件内容

Java 在Servlet中以字符串形式获取文件内容,java,html,xml,servlets,Java,Html,Xml,Servlets,我正在使用HTML表单将文件上载到Servlet。通常,我想上传XML文件,但验证是在服务器端完成的 如何在Servlet上以字符串形式获取文件内容 这是我的HTML表单: <form action="xml" enctype="multipart/form-data"> Select XML file: <input data-theme="b" type="file" name="xmlFile" > <input data-theme="b" id="xml"

我正在使用HTML表单将文件上载到Servlet。通常,我想上传XML文件,但验证是在服务器端完成的

如何在Servlet上以字符串形式获取文件内容

这是我的HTML表单:

<form action="xml" enctype="multipart/form-data">
Select XML file: <input data-theme="b" type="file" name="xmlFile" >
<input data-theme="b" id="xml" type="submit" value="Load">
</form>
目前,我试图以“参数”的形式获取该文件-返回null

我的目标是上载文件,在servlet中以字符串形式获取其内容,并继续在servlet中处理字符串。

文件上载遵循RFC并向服务器发送多部分(多部分/表单数据)


要处理多部分服务器端,请使用适当的库(如Apache)

您可以使用commons file upload解析多部分请求。完成请求解析后,公共文件上载将为您提供一个FileItem实例。从FileItem实例获取输入流并使用servlet中的内容

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws  ServletException, IOException {
    DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    // Parse the request
    List<FileItem> items = upload.parseRequest(request);
    for (FileItem item : items){
        InputStream in = item.getInputStream();
        //Use in here
    }
}
protectedvoiddopost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
DiskFileItemFactory=新的DiskFileItemFactory();
ServletFileUpload upload=新的ServletFileUpload(工厂);
//解析请求
列表项=upload.parseRequest(请求);
用于(文件项:项){
InputStream in=item.getInputStream();
//在这里使用
}
}

此文件可能重复。我正在查找文件的字符串数据。我在HTMl表单中使用多部分/表单数据。是的,但您在服务器端没有正确处理它
request.getParameter()
不是好办法。检查Commons文件上传docsOK。现在,我在serlvet-@multipartconfig中使用注释,我有这样一个:partfilepart=request.getPart(“xmlFile”);InputStream filecontent=filePart.getInputStream();字符串XMlFileContent=getStringFromInputStream(filecontent);我仍然得到500个内部服务器错误捕获异常服务器端并打印跟踪,以查看是什么触发了500items=upload.parseRequest(请求);这是非法的,请参阅
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws  ServletException, IOException {
    DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    // Parse the request
    List<FileItem> items = upload.parseRequest(request);
    for (FileItem item : items){
        InputStream in = item.getInputStream();
        //Use in here
    }
}