我有一个公式,其中有4个文件需要上传。
因为我使用OpenCms自动上传文件夹中的所有文件,所以我不需要为自己上传文件。
现在问题:我需要一个enctype="multipart/form-data"
Formular,因此软件可以上传它。
现在我无法使用request.getParameter("")
读取参数,而是使用FileItems和Iterator列表。
但List<FileItems>
我收到[]
。
也许你可以帮我解决这个问题。这是我的代码的一部分:
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...
}
答案 0 :(得分:0)
文件到达请求流,可以读取一次。我猜你的CMS已经读过这个请求流,所以它现在是空的,ServletFileUpload可以从中读取任何内容。
向CMS咨询文件。请参阅CMS文档,了解如何获取与上传文件一起解析的多部分参数。