private static void analyseMultipart(Multipart mpart,Map mailBodyMap){
try{
int count = mpart.getCount();
for(int i=0;i<count;i++){
Part part = mpart.getBodyPart(i);
if(part.isMimeType("multipart/*")){
analyseMultipart((Multipart)part.getContent(),mailBodyMap);
}else{
if(part.isMimeType("TEXT/*")){
//文本
if(part.getFileName()==null){
if(part.isMimeType("TEXT/PLAIN")){ 相关处理; }
if(part.isMimeType("TEXT/HTML")){ 相关处理 }
}else{
//文本附件
String filename = MimeUtility.decodeText(part.getFileName());
saveFile(part.getInputStream(),filename);
}
}else{
//二进制文件
String disp = part.getDisposition();
String contentId = ((MimePart)part).getContentID();
if (disp != null && disp.equalsIgnoreCase(Part.ATTACHMENT)){
//二进制附件
String filename = MimeUtility.decodeText(part.getFileName());
saveFile(part.getInputStream(),filename); }else if(contentId!=null){
//可能是超文本正文中的图片
//save file to disk
String filename = MimeUtility.decodeText(part.getFileName());
if(filename!=null){
saveFile(part.getInputStream(),filename); }
}
}
}
}
}catch(Exception e){
e.printStackTrace();
}
}
××××××××
private void saveFile(InputStream input, String fileName) {
int i = 0;
File file = new File(fileName);
try {
FileOutputStream myFileoutputstream = new FileOutputStream(tempPath +
fileName);
int c;
while ( (c = input.read()) != -1) {
myFileoutputstream.write(c); //从字节数组中读入数据写到文件中
++i;
}
myFileoutputstream.close();
}
catch (java.io.FileNotFoundException fnfe) {
}
catch (java.io.IOException ioe) {
}
}
try{
int count = mpart.getCount();
for(int i=0;i<count;i++){
Part part = mpart.getBodyPart(i);
if(part.isMimeType("multipart/*")){
analyseMultipart((Multipart)part.getContent(),mailBodyMap);
}else{
if(part.isMimeType("TEXT/*")){
//文本
if(part.getFileName()==null){
if(part.isMimeType("TEXT/PLAIN")){ 相关处理; }
if(part.isMimeType("TEXT/HTML")){ 相关处理 }
}else{
//文本附件
String filename = MimeUtility.decodeText(part.getFileName());
saveFile(part.getInputStream(),filename);
}
}else{
//二进制文件
String disp = part.getDisposition();
String contentId = ((MimePart)part).getContentID();
if (disp != null && disp.equalsIgnoreCase(Part.ATTACHMENT)){
//二进制附件
String filename = MimeUtility.decodeText(part.getFileName());
saveFile(part.getInputStream(),filename); }else if(contentId!=null){
//可能是超文本正文中的图片
//save file to disk
String filename = MimeUtility.decodeText(part.getFileName());
if(filename!=null){
saveFile(part.getInputStream(),filename); }
}
}
}
}
}catch(Exception e){
e.printStackTrace();
}
}
××××××××
private void saveFile(InputStream input, String fileName) {
int i = 0;
File file = new File(fileName);
try {
FileOutputStream myFileoutputstream = new FileOutputStream(tempPath +
fileName);
int c;
while ( (c = input.read()) != -1) {
myFileoutputstream.write(c); //从字节数组中读入数据写到文件中
++i;
}
myFileoutputstream.close();
}
catch (java.io.FileNotFoundException fnfe) {
}
catch (java.io.IOException ioe) {
}
}
解决方案 »
- 正则表达式问题
- url变量从浏览器到action的编码状态是如何变的?
- 请教:JSF页面传递参数??
- jpa in spring问题 xxx is not a known entity type
- “一个Struts实现分页,增删改查,Tiles,国际化的DEMO”请教
- 用Dephi写客户端和服务端,之间通讯可以通过web services吗?使用什么技术
- 请问如何把网络上的一个目录下的所有文件放在自己程序中的一个Vector中
- 关于java.net.BindException: Address already in use
- 一个简单里制例子,请有耐心人详解
- 请教:我把word.doc文档以bin.base64类型方式形成一个xml,上传到服务器后,如何在servlet中,读取这个流。。。
- javamail奇怪的问题!
- 用JBX写了一个关于Struts的最简单的程序结果出错,郁闷。
参数mailBodyMap应该去掉,
private static void analyseMultipart(Multipart mpart){}