附件我使用Oreilly MultipartRequest servlet来解析形式的multipart/form-data的请求,像这样:的Java:发送电子邮件使用奥赖利MultipartRequest的servlet
String path = getServletContext().getRealPath("/tmp");
List uploadFiles = new ArrayList();
MultipartRequest multi = new MultipartRequest(request, path, 50 * 1024 * 1024, "UTF-8");
Enumeration<String> params = multi.getParameterNames();
Enumeration<String> files = multi.getFileNames();
//retrieve text parameters
String param;
while(params .hasMoreElements()){
param = params .nextElement();
for(String occurence : multi.getParameterValues(param)){
pageContext.setAttribute(param, occurence);
}
}
//get files
String fileParam;
while(files.hasMoreElements()){
fileParam = files.nextElement();
uploadFiles.add(multi.getFile(fileParam));
}
我能够得到的所有数据,但在文件的问候,我想把它们作为附件发送,通常这是因为这样做(通过解析request
)
ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
try {
List fileItemsList = servletFileUpload.parseRequest(request);
Iterator it = fileItemsList.iterator();
while (it.hasNext()){
FileItem fileItem = (FileItem)it.next();
if (fileItem.isFormField()){
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(fileItem.getString());
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(fileItem.getFieldName());
multipart.addBodyPart(messageBodyPart);
}
}
} catch(Exception e) {
out.println(e.toString());
}
相反,我创建的所有文件uploadFiles
列表上传。问题是附件使用FileItem接口,它允许我使用getString()
获取文件项目的内容作为字符串,而Oreilly MultipartRequest
仅将该文件作为File
对象返回。我怎样才能使用File
Object的内容,或者将它转换成FileItem
对象。
http://stackoverflow.com/q/2422468 – BalusC