附件我使用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