我正在编写一个从客户端接收 xml 文件并使用它的 servlet。
我的问题是,在 servletinputstream(我得到的是:request.getInputStream())中,开始和结束时有一些上传信息:
-----------------------------186292285129788
Content-Disposition: form-data; name="myFile"; filename="TASKDATA - Kopie.XML"
Content-Type: text/xml
<XML-Content>
-----------------------------186292285129788--
是否有一种智能解决方案可以将这些线路从 servletinputstream 中删除?
问候
这是一个 multipart/form-data
header (在 RFC2388 中指定)。捕获一个完全有值(value)的 multipart/form-data
解析器,而不是重新发明你自己的。 Apache Commons FileUpload是这项工作事实上的标准 API。将所需的 JAR 文件放在 /WEB-INF/lib
中,然后它会很简单:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) {
// Process regular form field (input type="text|radio|checkbox|etc", select, etc).
String fieldname = item.getFieldName();
String fieldvalue = item.getString();
// ... (do your job here)
} else {
// Process form file field (input type="file").
String fieldname = item.getFieldName();
String filename = FilenameUtils.getName(item.getName());
InputStream filecontent = item.getInputStream();
// ... (do your job here)
}
}
} catch (FileUploadException e) {
throw new ServletException("Cannot parse multipart request.", e);
}
// ...
}
再一次强调,不要重新发明你自己的。您真的不想进行维护。