Java 获取多部分表单的一部分
Java get part of muiltipart form
我有一个公式,其中有 4 个文件需要上传。
因为我使用的是 OpenCms,它会自动上传文件夹中的所有文件,所以我不需要自己这样做。
现在的问题:我需要一个 enctype="multipart/form-data"
公式,以便软件可以上传它。
现在我无法使用 request.getParameter("")
读取参数,而是使用 FileItems 列表和迭代器。
但是 List<FileItems>
我得到 returns []
.
也许你能帮我解决这个问题。这是我的代码的一部分:
private void createNachricht(CmsObject cms, HttpServletRequest request) {
System.out.println("execute createNachricht...");
List<CmsProperty> bildprops = new ArrayList<CmsProperty>();
List<CmsProperty> props = new ArrayList<CmsProperty>();
Map<String, String> allRequestData = new TreeMap<String, String>();
try {
if (ServletFileUpload.isMultipartContent(request)) {
System.out.println("isMultipartContent");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload servletFileUpload = new ServletFileUpload(
factory);
@SuppressWarnings("unchecked")
List<FileItem> fileItemsList = servletFileUpload
.parseRequest(request); // returns [] so it's empty...
Iterator<FileItem> it = fileItemsList.iterator();
while (it.hasNext()) {
FileItem fileItemTemp = it.next();
if (!fileItemTemp.isFormField()) {
StringBuilder fileName = new StringBuilder(
sanitizeFilename(fileItemTemp.getName()));
System.out.println("fileName: " + fileName);
} else {
String name = fileItemTemp.getFieldName();
String val = fileItemTemp.getString("utf-8");
allRequestData.put(name, val);
System.out.println("name: " + name);
System.out.println("value: " + val);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
// more code here...
}
文件到达请求流,可以读取一次。我猜你的 CMS 已经读取了这个请求流,所以它现在是空的,ServletFileUpload 无法从中读取任何内容。
向您的 CMS 索要文件。请参阅您的 CMS 文档,了解如何获取与上传文件一起解析的多部分参数。
我有一个公式,其中有 4 个文件需要上传。
因为我使用的是 OpenCms,它会自动上传文件夹中的所有文件,所以我不需要自己这样做。
现在的问题:我需要一个 enctype="multipart/form-data"
公式,以便软件可以上传它。
现在我无法使用 request.getParameter("")
读取参数,而是使用 FileItems 列表和迭代器。
但是 List<FileItems>
我得到 returns []
.
也许你能帮我解决这个问题。这是我的代码的一部分:
private void createNachricht(CmsObject cms, HttpServletRequest request) {
System.out.println("execute createNachricht...");
List<CmsProperty> bildprops = new ArrayList<CmsProperty>();
List<CmsProperty> props = new ArrayList<CmsProperty>();
Map<String, String> allRequestData = new TreeMap<String, String>();
try {
if (ServletFileUpload.isMultipartContent(request)) {
System.out.println("isMultipartContent");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload servletFileUpload = new ServletFileUpload(
factory);
@SuppressWarnings("unchecked")
List<FileItem> fileItemsList = servletFileUpload
.parseRequest(request); // returns [] so it's empty...
Iterator<FileItem> it = fileItemsList.iterator();
while (it.hasNext()) {
FileItem fileItemTemp = it.next();
if (!fileItemTemp.isFormField()) {
StringBuilder fileName = new StringBuilder(
sanitizeFilename(fileItemTemp.getName()));
System.out.println("fileName: " + fileName);
} else {
String name = fileItemTemp.getFieldName();
String val = fileItemTemp.getString("utf-8");
allRequestData.put(name, val);
System.out.println("name: " + name);
System.out.println("value: " + val);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
// more code here...
}
文件到达请求流,可以读取一次。我猜你的 CMS 已经读取了这个请求流,所以它现在是空的,ServletFileUpload 无法从中读取任何内容。
向您的 CMS 索要文件。请参阅您的 CMS 文档,了解如何获取与上传文件一起解析的多部分参数。